站外题求条(悬一关)
  • 板块灌水区
  • 楼主shizhihao11
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/12/14 17:32
  • 上次更新2024/12/14 20:18:52
查看原帖
站外题求条(悬一关)
1045393
shizhihao11楼主2024/12/14 17:32

数独游戏 题目描述 马老师给了你一个数独。这个数独由 n × m n×m 的字符方阵组成。

数独游戏的规则很简单。如果方阵中的每行、每列中,都没有重复的字符出现,那么这个数独就是合法的。

你需要判断数独的合法性。

输入 第一行输入一个整数 T T,表示数据组数。

接下来每组数据:

第一行输入两个整数 n , m n,m,表示数独长宽。

接下来输入一个 n × m n×m 的字符方阵。

输出 每组数据输出一行,如果数独合法,输出 Yes,否则输出 No。

Code:

#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;
}
2024/12/14 17:32
加载中...