XDOJ 1035: 数独
题解:超级大水题,就是判断行列上是否都是1-9个不同数字组成,AC过了,但是跑的有点慢,水题都这么慢,我太菜了,2333333
#include<iostream> #include<algorithm> #include<queue> #include<stack> #include<map> #include<set> #include<vector> #include<cstring> using namespace std; int main(){ int m; int a[10][10],b[10][10],c[10][10],d[10],e[10]; while(cin>>m){ for(int i=1;i<=m;i++){ memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); memset(e,0,sizeof(e)); memset(a,0,sizeof(a)); for(int j=1;j<=9;j++){ for(int k=1;k<=9;k++){ cin>>a[j][k]; } } for(int j=1;j<=9;j++){ for(int k=1;k<=9;k++){ if(a[j][k]<=9&&a[j][k]>=1){ b[j][a[j][k]]=1; c[a[k][j]][j]=1; // cout<<a[k][j]<<" "<<j<<endl; } } } for(int j=1;j<=9;j++){ int sum=0; int ans=0; for(int k=1;k<=9;k++){ sum+=b[j][k]; ans+=c[k][j]; } d[j]=sum;e[j]=ans; } int flag=0; for(int j=1;j<=9;j++){ if(d[j]!=9||e[j]!=9){ flag=1; break; } } if(flag==0) cout<<"yes"<<endl; else cout<<"no"<<endl; } } }