算法提高 9-1九宫格
时间限制:1.0s 内存限制:256.0MB
问题描述
九宫格。输入1-9这9个数字的一种任意排序,构成3*3二维数组。如果每行、每列以及对角线之和都相等,打印1。否则打印0。
样例输出
与上面的样例输入对应的输出。
例:
例:
数据规模和约定
输入1-9这9个数字的一种任意排序。
方案一:
1 #include2 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 #include2 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