dfs 60分求调,第3、4、6、9点WA,代码中dfs后面是去重
查看原帖
dfs 60分求调,第3、4、6、9点WA,代码中dfs后面是去重
877104
Liao_StarrySky楼主2024/5/9 17:05
#include<bits/stdc++.h>
using namespace std;

int a[110][110],n,m,k;
long long b[100010],pp;

int dx[3]={0,1,0};
int dy[3]={0,0,1};

void dfs(int x,int y,long long sum){
	
	if( x==n && y==m ) b[++pp]=sum%k;
	else{
		
		for(int i=1;i<=2;i++){
			
			int nx=dx[i]+x;
			int ny=dy[i]+y;
			
			if( nx<=n && ny<=m ) dfs(nx,ny,(sum*a[nx][ny]%k)%k);
			
		}
		
	}
	
	return;
	
}

int main(){
	
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		
		for(int j=1;j<=m;j++){
			
			cin>>a[i][j];
			
		}
		
	}
	
	dfs(1,1,a[1][1]%k);
	
	sort(b+1,b+pp+1);
	int m=pp;
	for(int i=1;i<=m;i++){
		
		if( b[i]==b[i-1] && i!=1 ){
			
			b[i-1]=100;
			pp--;
			
		}
		
	}
	sort(b+1,b+m+1);
	
	cout<<pp<<endl;
	for(int i=1;i<=pp;i++) cout<<b[i]<<' ';
	
	return 0;
	
}
2024/5/9 17:05
加载中...