C語言 · 9-1九宮格


算法提高 9-1九宮格  
時間限制:1.0s   內存限制:256.0MB
    
問題描述
  九宮格。輸入1-9這9個數字的一種任意排序,構成3*3二維數組。如果每行、每列以及對角線之和都相等,打印1。否則打印0。
樣例輸出
與上面的樣例輸入對應的輸出。
例:
數據規模和約定
  輸入1-9這9個數字的一種任意排序。
方案一: 
 1 #include<stdio.h> 
 2 int main(){
 3     /*定義二維數組,並賦初值為0*/
 4     int a[3][3];
 5     /*錄入A[m][s]*/
 6     for(int i=0;i<3;i++){
 7         for(int j=0;j<3;j++){
 8             scanf("%d",&a[i][j]);
 9         }
10     }
11 //    /*打印A[m][s]*/
12 //    for(int i=0;i<3;i++){
13 //        for(int j=0;j<3;j++){
14 //            printf("%d ",a[i][j]);
15 //        }
16 //        printf("\n");
17 //    }
18     int row1=0,row2=0,row3=0,pol1=0,pol2=0,pol3=0,Xie1=0,Xie2=0;
19     row1 = a[0][0]+a[0][1]+a[0][2];
20     row2 = a[1][0]+a[1][1]+a[1][2];
21     row3 = a[2][0]+a[2][1]+a[2][2];
22     
23     pol1 = a[0][0]+a[1][0]+a[2][0];
24     pol2 = a[0][1]+a[1][1]+a[2][1];
25     pol3 = a[0][2]+a[1][2]+a[2][2];
26     
27     Xie1 = a[0][0]+a[1][1]+a[2][2];
28     Xie2 = a[0][2]+a[1][1]+a[2][0];
29 //    printf("%d, %d, %d, %d, %d, %d, %d, %d\n",row1,row2,row3,pol1,pol2,pol3,Xie1,Xie2);
30     for(int i=0;i<3;i++){
31         if(row1 == row2 == row3 == pol1 == pol2 == pol3 == Xie1 == Xie2){
32             printf("1");
33             break;
34         }else{
35             printf("0");
36             break;
37         }
38     }
39 }


方案二:

 

 1 #include<stdio.h> 
 2 int main(){
 3     int sum=0,k=0;
 4     int s[100]={0};//結果數組,並賦初值為0
 5     /*定義二維數組*/
 6     int a[3][3];
 7     int i,j;
 8     /*錄入A[m][s]*/
 9     for(i=0;i<3;i++){
10         sum=0;//每輸入一行時sum置為0 
11         for(j=0;j<3;j++){
12             scanf("%d",&a[i][j]);
13             sum = sum+a[i][j];
14         }
15         s[k++] = sum;//每行的和 ,這個比較好理解 
16     }
17     
18     for(sum=0,i=0;i<3;i++){
19         sum=0;
20         for(j=0;j<3;j++){
21             sum+=a[j][i];
22         }
23         s[k++] = sum;//每列的和 ,聯想矩陣轉置,也好理解 
24     }
25     
26     for(sum=0,i=0;i<3;i++)
27         sum+=a[i][i];
28     s[k++] = sum;//主對角線元素和 
29     
30     s[k++] = a[0][2]+a[1][1]+a[2][0];//副對角線元素和 
31     
32     //類似於選擇排序的遍歷 
33     bool flag=true; 
34     for(i=0;i<k-1;i++){
35         for(j=i+1;j<k;j++){
36             if(s[i] != s[j]){
37                 flag=false;//不相等則flag為假 
38             }
39         }
40     }
41     if(flag)//若flag真 
42         printf("1");
43     else
44         printf("0");
45     return 0;
46 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM