#14983: C語言寫的,一直TLE,找不到問題


stanley890314@gmail.com (李旭清)


#include<stdio.h>

int main(void)
{
    int a,b,c,d,sum=0,input[10][10];
    while(1)
    {
        start:
        for(a=1;a<=9;a++)
        {
            for(b=1;b<=9;b++)
            {
            if(scanf(" %d",&input[a][b]),input[a][b]==EOF)
                {
                    goto end;
                }
            }
        }
        for(a=1;a<=9;a++)
        {
            for(b=1;b<=9;b++)
            {
                sum+=input[a][b];
            }
            if(sum!=45)
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        }
        for(a=1;a<=9;a++)
        {
            for(b=1;b<=9;b++)
            {
                sum+=input[b][a];
            }
            if(sum!=45)
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        }
        for(a=0;a<9;a+=3)
        {
             for(b=0;b<9;b+=3)
             {
                 for(c=1;c<=3;c++)
                 {
                     for(d=1;d<=3;d++)
                     {
                         sum+=input[a+c][b+d];
                     }
                 }
                 if(sum!=45)
                 {
                     printf("no\n");
                     sum=0;
                     goto start;
                 }
                sum=0;
            }
        }

        printf("yes\n");
    }
    end:
    sum=0;
}

 

 

請求幫忙看哪裡有問題

#14984: Re:C語言寫的,一直TLE,找不到問題


stanley890314@gmail.com (李旭清)


#include

int main(void)
{
    int a,b,c,d,sum=0,input[10][10];
    while(1)                                                              //讓程式一直動作
    {
        start:
        for(a=1;a<=9;a++)
        {
            for(b=1;b<=9;b++)                                    //輸入input[1~9][1~9]的數值
            {
            if(scanf(" %d",&input[a][b]),input[a][b]==EOF)//一旦程式遇到EOF就跳脫
                {
                    goto end;
                }
            }
        }
        for(a=1;a<=9;a++)                                      //將輸入加進sum

        {
            for(b=1;b<=9;b++)                                  //將輸入加進sum(先直行再橫行)
            {
                sum+=input[a][b];
            }
            if(sum!=45)                                             //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        } 
        for(a=1;a<=9;a++)                                    //將輸入加進sum
        {
            for(b=1;b<=9;b++)                                //將輸入加進sum(先橫行再直行)
            {
                sum+=input[b][a];
            }
            if(sum!=45)                                             //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        }
        for(a=0;a<9;a+=3)                                     //將輸入以九宮格的方式相加
        {
             for(b=0;b<9;b+=3)
             {
                 for(c=1;c<=3;c++)
                 {
                     for(d=1;d<=3;d++)
                     {
                         sum+=input[a+c][b+d];
                     }
                 }
                 if(sum!=45)                                    //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
                 {
                     printf("no\n");
                     sum=0;
                     goto start;
                 }
                sum=0;
            }
        }

        printf("yes\n");                                        //輸出yes
    }
    end:
    sum=0;
}

 

 

請求幫忙看哪裡有問題

第一次發文

增加註解

希望各位大大幫忙

本人剛開始學習c語言




#15006: Re:C語言寫的,一直TLE,找不到問題


jackywu (練習生)


#include

int main(void)
{
    int a,b,c,d,sum=0,input[10][10];
    while(1)                                                              //讓程式一直動作
    {
        start:
        for(a=1;a<=9;a++)
        {
            for(b=1;b<=9;b++)                                    //輸入input[1~9][1~9]的數值
            {
            if(scanf(" %d",&input[a][b]),input[a][b]==EOF)//一旦程式遇到EOF就跳脫
                {
                    goto end;
                }
            }
        }
        for(a=1;a<=9;a++)                                      //將輸入加進sum

        {
            for(b=1;b<=9;b++)                                  //將輸入加進sum(先直行再橫行)
            {
                sum+=input[a][b];
            }
            if(sum!=45)                                             //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        } 
        for(a=1;a<=9;a++)                                    //將輸入加進sum
        {
            for(b=1;b<=9;b++)                                //將輸入加進sum(先橫行再直行)
            {
                sum+=input[b][a];
            }
            if(sum!=45)                                             //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
            {
                printf("no\n");
                sum=0;
                goto start;
            }
            sum=0;
        }
        for(a=0;a<9;a+=3)                                     //將輸入以九宮格的方式相加
        {
             for(b=0;b<9;b+=3)
             {
                 for(c=1;c<=3;c++)
                 {
                     for(d=1;d<=3;d++)
                     {
                         sum+=input[a+c][b+d];
                     }
                 }
                 if(sum!=45)                                    //判斷是否為45,若不是就輸出no,並且讓sum變回0,且回到程式最開頭
                 {
                     printf("no\n");
                     sum=0;
                     goto start;
                 }
                sum=0;
            }
        }

        printf("yes\n");                                        //輸出yes
    }
    end:
    sum=0;
}

 

 

請求幫忙看哪裡有問題

第一次發文

增加註解

希望各位大大幫忙

本人剛開始學習c語言



應該是用太多迴圈了 同樣跑過9X9的數獨 一次判斷會比較快喔