题目链接:http://acm.xidian.edu.cn/problem.php?id=1035
#include <iostream> #include <string.h> using namespace std; /**************************************************************************************************************** 题意:判断是否符合数独矩阵 思路: 1,每行每列 1—9 有且只出现一次。(可用一个数组记录哪个数字出现了) 2,每行每列和为45 3,行列分开遍历即可 ****************************************************************************************************************/ int f[10],a[10][10]; int main() { int T; cin>>T; while(T--) { int sum=0; for(int i = 1;i <= 9;i ++) for(int j = 1;j <= 9;j ++) cin>>a[i][j]; for(int i = 1;i <= 9;i ++){ memset(f,0,sizeof(f)); sum=0; for(int j = 1;j <= 9;j ++){ if(a[i][j] < 1 || a[i][j] > 9) continue; else if(!f[a[i][j]]){ f[a[i][j]]=1; sum+=a[i][j]; } } if(sum != 45) break; } if(sum != 45) cout<<"no"<<endl; else{ for(int i = 1;i <= 9;i ++){ memset(f,0,sizeof(f)); sum=0; for(int j = 1;j <= 9;j ++){ if(a[j][i] < 1 || a[j][i] > 9) continue; else if(!f[a[j][i]]){ f[a[j][i]]=1; sum+=a[j][i]; } } if(sum != 45) break; } if(sum != 45) cout<<"no"<<endl; else cout<<"yes"<<endl; } } return 0; }