首页 > 编程语言 > 详细

C语言 · 9-1九宫格 · 算法提高

时间:2017-01-13 22:05:54      阅读:442      评论:0      收藏:0      [点我收藏+]
算法提高 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,f=1;
 4     int s[100]={0};
 5     /*定义二维数组,并赋初值为0*/
 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     s[k++] = a[0][2]+a[1][1]+a[2][0];//副对角线元素和 
30     for(i=0;i<k-1;i++)
31         for(j=i+1;j<k;j++){
32             if(s[i] != s[j]){
33                 f=0;
34             }
35         }
36     s[k++] = sum;//每列的和 
37     if(f)
38         printf("1");
39     else
40         printf("0");
41     return 0;
42 }

 

 
 
 

C语言 · 9-1九宫格 · 算法提高

原文:http://www.cnblogs.com/panweiwei/p/6284108.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!