码风观赏
查看原帖
码风观赏
525223
敢问高姓大名楼主2024/8/1 20:47

比较随大流

有和我像的欢迎互关

#include <bits/stdc++.h>
using namespace std;
int mp[105][105];
int b[105][105][105];
int c[105][105];
int gx[2] = {1,0},gy[2] = {0,1};
int n,m,k,ans;
void dfs(int x,int y,int w){
	if (x == n && y == m){
		ans++;
		return;
	}
	for (int i = 0;i < 2;i++){
		int tx = x + gx[i];
		int ty = y + gy[i];
		int w2 = w;
		w2 = w * (mp[tx][ty] % k);
		w2 %= k;
		if (tx >= 1 && tx <= n && ty >= 1 && ty <= m && c[tx][ty] == 0 && b[tx][ty][w2] != 1){
			b[tx][ty][w2] = 1;
			c[tx][ty] = 1;
			dfs(tx,ty,w2);
			c[tx][ty] = 0;
		}
	}
}
int main(){
	memset(b,-1,sizeof(b));
	cin >> n >> m>> k;
	for (int i = 1;i <= n;i++){
		for (int j = 1;j <= m;j++){
			cin >> mp[i][j];
		}
	}
	c[1][1] = 1;
	dfs(1,1,mp[1][1]);
	cout << ans << endl;
	for (int i = 0;i < k;i++){
		if (b[n][m][i] == 1) cout << i << ' ';
	}
	return 0;
}
2024/8/1 20:47
加载中...