#6000: 一直TLE 請各位幫幫忙


rish (rish)


#include <stdio.h>
int main(void)
{
    int i,j,k,l,d;
    int input[9][9];
    while(1)
    {
        d=1;
        for(i=0; i<9; i++)
        {
            for(j=0; j<9; j++)
            {
                scanf("%d",&input[i][j]);
            }
        }
        for(i=0;i<9&&d==1;i++)//檢查橫的
        {
            int num[9]={0};
            for(k=0;k<9;k++)
            {
                if(num[input[i][k]-1]==1)
                {
                    d=0;
                    break;
                }
                num[input[i][k]-1]++;
            }
        }
        for(i=0;i<9&&d==1;i++)//檢查直的
        {
            int num[9]={0};
            for(k=0;k<9;k++)
            {
                if(num[input[k][i]-1]==1)
                {
                    d=0;
                    break;
                }
                num[input[k][i]-1]++;
            }
        }
        for(j=0; j<=6&&d==1; j+=3)//檢查九宮格的
        {
            for(l=0; l<=6&&d==1; l+=3)
            {
                int num[9]={0};
                for(i=j; i<j+3&&d==1; i++)
                {
                    for(k=l; k<l+3; k++)
                    {
                        if(num[input[i][k]-1]==1)
                        {
                            d=0;
                            break;
                        }
                        num[input[i][k]-1]++;
                    }
                }
            }
        }
        if(d)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}
#8581: Re:一直TLE 請各位幫幫忙


qxpoxw (will)


輸入改成
while(scanf("%d",&input[0][0])==1)
    {
        d=1;
        for(i=0; i<9; i++)
        {
            for(j=0; j<9; j++)
            {
                if(i==0&&j==0)continue;
                scanf("%d",&input[i][j]);
            }
        }
因該就能解決嚕~