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


stanley890314@gmail.com (李旭清)

學校 : 國立嘉義高級工業職業學校
編號 : 80828
來源 : [220.142.198.212]
最後登入時間 :
2021-09-09 23:21:05
a016. 數獨(SUDOKU) | From: [220.143.92.4] | 發表日期 : 2018-08-27 21:21

#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 (李旭清)

學校 : 國立嘉義高級工業職業學校
編號 : 80828
來源 : [220.142.198.212]
最後登入時間 :
2021-09-09 23:21:05
a016. 數獨(SUDOKU) | From: [220.143.92.4] | 發表日期 : 2018-08-27 21:35

#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 (練習生)

學校 : 不指定學校
編號 : 7776
來源 : [123.193.144.208]
最後登入時間 :
2018-08-18 12:46:50
a016. 數獨(SUDOKU) | From: [123.193.144.208] | 發表日期 : 2018-08-30 20:19

#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的數獨 一次判斷會比較快喔




 
ZeroJudge Forum