#include<stdio.h>
#include <iostream>
using namespace std;
int main()
{
int i,k,temp[15],j,sud[15][15],find,l;
string input;
char te;
while(getline(cin,input))
{
for(j=1;j<=9;j++)
sud[1][j]=input[2*(j-1)]-48;
for(i=2;i<=9;i++)
{
getline(cin,input);
for(j=1;j<=9;j++)
sud[i][j]=input[2*(j-1)]-48;
}
find=0;
for(i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
temp[j]=0;
for(k=1;k<=9;k++)
temp[sud[i][k]]++;
for(j=1;j<=9;++j)
if(temp[j]!=1)
find=1;
}
if(find==0)
for(i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
temp[j]=0;
for(k=1;k<=9;k++)
temp[sud[k][i]]++;
for(j=1;j<=9;++j)
if(temp[j]!=1)
find=1;
}
if(find==0)
for(i=1;i<=7;i=i+3)
{
for(j=1;j<=7;j=j+3)
{
for(k=1;k<=9;++k)
temp[k]=0;
for(k=i;k<=i+2;k++)
for(l=j;l<=j+2;l++)
temp[sud[k][l]]++;
for(k=1;k<=9;++k)
if(temp[k]!=1)
find=1;
}
}
if(find==0)
printf("yes\n");
else
printf("no\n");
}
}
用Dev C++跑沒問題
答案在第二個就錯了?????
每進入一次while迴圈find要重新歸零吧?