#8428: 連吃三個WA不知道錯在哪,WA(line(4))


sivs612056 (斷開魂結)


如題,請各位高手指點一下

judge判斷小3x3九宮格

row跟col判斷直的以及橫的 

附上程式碼

 #include<stdio.h>

#include<stdlib.h>

int m[9][9]={0};

int main()

{

    int judge(int i,int j,int x,int y);

    int col();

    int row();

    int i,j,flag=0;

   

    while(scanf("%d",&m[0][0])!=EOF)

    {

     for(i=1;i<9;i++)

      scanf("%d",&m[0][i]);

     for(i=1;i<9;i++)

      for(j=0;j<9;j++)

       scanf("%d",&m[i][j]);

     flag=judge(0,0,3,3);

     flag=judge(0,3,3,6);

     flag=judge(0,6,3,9);

     

     flag=judge(3,0,6,3);

     flag=judge(3,3,6,6);

     flag=judge(3,6,6,9);

     

     flag=judge(6,0,9,3);

     flag=judge(6,3,9,6);

     flag=judge(6,6,9,9);

     if(flag==1)

     {

      printf("no\n");

      flag=0;

      continue;

     }

     else if(row() || col())

     {

      printf("no\n");

      flag=0;

      continue;

     }

     else

      printf("yes\n");

     flag=0;

    }

    system("pause");

    return 0;

}

 

int judge(int i,int j,int x,int y)

{

    int k,l,temp[9]={0},flag=0;

    for(k=i;k<x;k++)

    {

     for(l=j;l<y;l++)

     {

      temp[m[k][l]-1]++;

      if(temp[m[k][l]-1]>1)

       flag=1;

      }

     }

    return flag;

}

 

int row()

{

    int i,temp[9]={0},j,flag=0;

    for(i=0;i<9;i++)

    {

     for(j=0;j<9;j++)

     {

      temp[m[i][j]-1]++;

      if(temp[m[i][j]-1]>1)

      {

       flag=1;

       return flag;

      }

     }

     for(j=0;j<9;j++)

      temp[j]=0;

    }

    return flag;

}

 

int col()

{

    int i,temp[9]={0},j,flag=0;

    for(i=0;i<9;i++)

    {

     for(j=0;j<9;j++)

     {

      temp[m[j][i]-1]++;

      if(temp[m[j][i]-1]>1)

      {

       flag=1;

       return flag;

      }

     }

     for(j=0;j<9;j++)

      temp[j]=0;

    }

    return flag;

}


#8442: Re:連吃三個WA不知道錯在哪,WA(line(4))


sivs612056 (斷開魂結)


已解。