#11603: 請教要怎麼改善TLE


v0938873787 (unknown)


#include <iostream>
using namespace std;

int main()
{
   int i, j, k;
   int x;
   int check_arr[10];
   int play_arr[9][9];


while (cin.peek() != EOF)
{
    star:
  //輸入數獨
  for (i=0; i<9; i++)
 {
    for (j=0; j<9; j++)
    {
        cin >> play_arr[i][j];
    }
  }

//輸入判斷值
for (x=0; x<10; x++)
{
check_arr[x] = -1;
}

//判斷行
for (i=0; i<9; i++)
{
    for (j=0; j<9; j++)
    {
        if (check_arr[play_arr[i][j]] == -1)
        {
             check_arr[play_arr[i][j]] = 1;
        }
        else
        {
             cout << "no" << endl;
             goto star;
        }
   }
        for (k=0; k<10; k++)
        {
            check_arr[k] = -1;
        }
   }

//判斷列
for (i=0; i<9; i++)
{
    for (j=0; j<9; j++)
    {
        if (check_arr[play_arr[j][i]] == -1)
        {
             check_arr[play_arr[j][i]] = 1;
        }
        else
        {
            cout << "no" << endl;
            goto star;
         }
     }
     for (k=0; k<10; k++)
     {
         check_arr[k] = -1;
     }
}

//判斷九宮格
int xx, yy;
for (i=0; i<9; i++)
{
  switch (i)
  {
    case 0:
    xx = 0;
    yy = 0;
    break;

    case 1:
    xx = 0;
    yy = 3;
    break;

    case 2:
    xx = 0;
    yy = 6;
    break;

    case 3:
    xx = 3;
    yy = 0;
    break;

    case 4:
    xx = 3;
    yy = 3;
    break;

    case 5:
    xx = 3;
    yy = 6;
    break;

    case 6:
    xx = 6;
    yy = 0;
    break;

    case 7:
    xx = 6;
    yy = 3;
    break;

    case 8:
    xx = 6;
    yy = 6;
    break;
    }
        for (j=0; j<3; j++)
        {
            for (k=0; k<3; k++)
            {
                 if (check_arr[play_arr[xx+j][yy+k]] == -1)
                 {
                      check_arr[play_arr[xx+j][yy+k]] = 1;
                 }
                 else
                 {
                     cout << "no" << endl;
                     goto star;
                  }
             }
         }
         for (x=0; x<10; x++)
         {
             check_arr[x] = -1;
         }
     }

     cout << "yes" << endl;
}


return 0;

}