数独游戏 题目描述 马老师给了你一个数独。这个数独由 n × m n×m 的字符方阵组成。
数独游戏的规则很简单。如果方阵中的每行、每列中,都没有重复的字符出现,那么这个数独就是合法的。
你需要判断数独的合法性。
输入 第一行输入一个整数 T T,表示数据组数。
接下来每组数据:
第一行输入两个整数 n , m n,m,表示数独长宽。
接下来输入一个 n × m n×m 的字符方阵。
输出 每组数据输出一行,如果数独合法,输出 Yes,否则输出 No。
#include<bits/stdc++.h>
using namespace std;
char a[105][105];
bool k[230];
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
bool tf=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(k[a[i][j]]==0) k[a[i][j]]=1;
else{
cout<<"No"<<endl;
tf=1;
}
}
if(tf==1) break;
memset(k,0,sizeof(k));
}
if(tf==1) continue;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(k[a[j][i]]==0) k[a[j][i]]=1;
else{
cout<<"No"<<endl;
tf=1;
}
}
if(tf==1) break;
memset(k,0,sizeof(k));
}
if(tf==1) continue;
cout<<"Yes"<<endl;
}
return 0;
}