求解答:檢驗幾組9*9的數獨是否正確,下面是我寫的程式,檢驗錯誤,不知道錯哪里了,向大佬求救,快截止了,謝謝!!!
#include <iostream>
using namespace std;
class sudoku
{
private:
int shudu[9][9];
public:
sudoku(int shuru[9][9])
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
shudu[i][j]=shuru[i][j];
}
}
}
void checkanswer()
{
int x=1;
for(int i=0;i<9;i++)
{
int a[9]={0};
for(int j=0;j<9;j++)
{
switch(shudu[i][j])
{
case 1:a[0]++;break;
case 2:a[1]++;break;
case 3:a[2]++;break;
case 4:a[3]++;break;
case 5:a[4]++;break;
case 6:a[5]++;break;
case 7:a[6]++;break;
case 8:a[7]++;break;
case 9:a[8]++;break;
}
if(!(a[0]==1&&a[1]==1&&a[2]==1&&a[3]==1&&a[4]==1&&a[5]==1&&a[6]==1&&a[7]==1&&a[8]==1))
{
x=0;
}
}
}
for(int i=0;i<9;i++)
{
int a[9]={0};
for(int j=0;j<9;j++)
{
switch(shudu[j][i])
{
case 1:a[0]++;break;
case 2:a[1]++;break;
case 3:a[2]++;break;
case 4:a[3]++;break;
case 5:a[4]++;break;
case 6:a[5]++;break;
case 7:a[6]++;break;
case 8:a[7]++;break;
case 9:a[8]++;break;
}
if(!(a[0]==1&&a[1]==1&&a[2]==1&&a[3]==1&&a[4]==1&&a[5]==1&&a[6]==1&&a[7]==1&&a[8]==1))
{
x=0;
}
}
}
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
int a[9]={0};
for(int m=0;m<3;m++)
{
for(int n=0;n<3;n++)
{
switch(shudu[m+3*i][n+3*j])
{
case 1:a[0]++;break;
case 2:a[1]++;break;
case 3:a[2]++;break;
case 4:a[3]++;break;
case 5:a[4]++;break;
case 6:a[5]++;break;
case 7:a[6]++;break;
case 8:a[7]++;break;
case 9:a[8]++;break;
}
}
}
if(!(a[0]==1&&a[1]==1&&a[2]==1&&a[3]==1&&a[4]==1&&a[5]==1&&a[6]==1&&a[7]==1&&a[8]==1))
{
x=0;
}
}
}
if(x==1)
cout<<"Yeah!"<<endl;
else
cout<<"oh,No!"<<x<<endl;
}
};
int main()
{
int n;
cin>>n;
int shuru[9][9]={0};
while(n--)
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
cin>>shuru[i][j];
}
}
sudoku a(shuru);
a.checkanswer();
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84696.html
標籤:C++ 語言
上一篇:用C語言實作此狀態機的代碼
下一篇:setbuf函式
