Pages

Monday, July 18, 2011

a016. 數獨(SUDOKU) 尚未成功解出

 

// string::rbegin and string::rend
#include
#include
using namespace std;

void clear(int X[]);
void show(int X[]);
int check(int X[]);
void read(int X[9][9]);
int row_check(int X[9][9]);
int column_check(int X[9][9]);
int square_check(int X[9][9]);

int main ()
{
int A[9][9]={0};
int flag=1;

read(A);
//cout< flag = row_check(A) & flag;
flag = column_check(A) & flag;
flag = square_check(A) & flag;
if(flag) cout<<"yes"< else cout<<"no"< //system("pause");
return 0;
}

void show(int X[])
{
for(int i=0;i<9;i++)
{
cout< }
}
void clear(int X[])
{
for(int i=0;i<10;i++)
{
X[i]=0;
}
}
int check(int X[])
{
int R[10]={0};
int isOk=1;

for(int i=0; i<9; i++)
{
if(R[ X[i] ] ==0)
{
R[ X[i] ]=1;
}
else isOk=0;
}
return isOk;
}
void read(int X[9][9])
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
cin>>X[i][j];
}
}
}
int row_check(int X[9][9])
{
int flag=1;
int W[9]={0};
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
W[i]=X[i][j];
}
if(check(W)==0)
{
flag=0;
}
}
return flag;
}
int column_check(int X[9][9])
{
int flag=1;
int W[9]={0};
for(int j=0;j<9;j++)
{
for(int i=0;i<9;i++)
{
W[i]=X[i][j];
}
if(check(W)==0)
{
flag=0;
}
}
return flag;
}
int square_check(int X[9][9])
{
int flag=1;
int W[9]={0};
int count=0;
for(int i=0;i<9;i+3)
{
for(int j=0;j<9;j+3)
{
for(int i2=0;i2<3;i2++)
{
for(int j2=0;j2<3;j2++)
{
W[count]=X[i+i2][j+j2];
count++;
}
}

if(check(W)==0)
{
flag=0;
}
count=0;
}
}


return flag;
}

No comments:

Post a Comment