#2936: TLE求救?


darkmore (小D)


#include<stdio.h>
int main(){
int s[9][9]={0};
    while(1){
     int a,b,c,o=0,z;
        for(a=0;a<9;a++){
                for(b=0;b<9;b++){
                    scanf("%d",&s[a][b]);
                }
        }
    
        for(a=0;a<9;a++){
            int x[10]={0};
            int y[10]={0};
                for(b=0;b<9;b++){
                    if(x[s[a][b]]==1||y[s[b][a]]==1){
                        o=1;
                        break;
                    }
                    x[s[a][b]]++;
                    y[s[b][a]]++;
                }

        }    
        
      if(o==0){
            for(a=0;a<9;a=a+3){  
                     
                    for(b=0;b<9;b=b+3){    
                            int d[10]={0};  
                            d[s[a][b]]++;
                            d[s[a][b+1]]++;
                            d[s[a][b+2]]++;
                            d[s[a+1][b]]++;
                            d[s[a+1][b+1]]++;
                            d[s[a+1][b+2]]++;
                            d[s[a+2][b]]++;
                            d[s[a+2][b+1]]++;
                            d[s[a+2][b+2]]++;
                            
                            
                            for(c=1;c<=9;c++){
                                if(d[c]>1){
                                    o=1;
                                    break;
                                }      
                            }
                  if(o==1) break;  
                 }
           if(o==1) break;                     
 
       
            }
        }    
        if(o==1)
            printf("no\n");
        else if(o==0)
            printf("yes\n");
    }
 
return 0;
}
#2939: Re:TLE求救?


morris1028 (碼畜)


 建議在zero上  不要用while(1) 輸入

因為會讀不到EOF跳出  而得到TLE

如果你要做修改的話 (你這題)

我做以下的修改

    while(scanf("%d",&s[0][0])==1)
      {
     int a,b,c,o=0,z;
        for(a=0;a<9;a++){
                for(b=0;b<9;b++)
                {
                    if(a==0&&b==0) continue;
                    scanf("%d",&s[a][b]);
                }
在這樣的情況下  就可以讀到結尾的字元  而跳出