1 solutions

  • 0
    @ 2026-1-25 10:27:41
    #include<bits/stdc++.h>
    using namespace std;
    const int N=15;
    int a[N][N];
    int cnt[N];
    int main()
    {
    	for(int i=0;i<9;i++)
    	{
    		for(int j=0;j<9;j++)
    		{
    			cin>>a[i][j];
    		}
    	}
    	bool flag=true;//合法状态
    	for(int i=0;i<9;i++)
    	{
    		for(int k=1;k<=9;k++) cnt[k]=0;//清空数据
    		for(int j=0;j<9;j++) cnt[a[i][j]]++; //统计第i行的所有数
    		for(int k=1;k<=9;k++)
    		{
    			if(cnt[k]!=1) flag=false; //不合法
    		}
    	}
    	for(int j=0;j<9;j++)
    	{
    		for(int k=1;k<=9;k++) cnt[k]=0;//清空数据
    		for(int i=0;i<9;i++) cnt[a[i][j]]++;//统计第j列的所有数字
    		for(int k=1;k<=9;k++)
    		{
    			if(cnt[k]!=1) flag=false;
    		}
    	}
    	for(int i=0;i<9;i+=3)
    	{
    		for(int j=0;j<9;j+=3)
    		{
    			for(int k=1;k<=9;k++) cnt[k]=0; //清空小矩阵
    			for(int dx=0;dx<3;dx++)
    			{
    				for(int dy=0;dy<3;dy++)
    				{
    					cnt[a[i+dx][j+dy]]++;
    				}
    			}
    			for(int k=1;k<=9;k++)
    			{
    				if(cnt[k]!=1) flag=false;
    			}
    		}
    	}
    	if(flag) cout<<"Yes"<<endl;
    	else cout<<"No"<<endl;
    	return 0;
    }
    
  • 1

Information

ID
2735
Time
1000ms
Memory
256MiB
Difficulty
3
Tags
# Submissions
15
Accepted
5
Uploaded By