算法提高 9-1九宫格  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  九宫格。输入1-9这9个数字的一种任意排序,构成3*3二维数组。如果每行、每列以及对角线之和都相等,打印1。否则打印0。
样例输出
与上面的样例输入对应的输出。
例:
C语言  ·  9-1九宫格-LMLPHP
数据规模和约定
  输入1-9这9个数字的一种任意排序。
方案一: 
 #include<stdio.h>
int main(){
/*定义二维数组,并赋初值为0*/
int a[][];
/*录入A[m][s]*/
for(int i=;i<;i++){
for(int j=;j<;j++){
scanf("%d",&a[i][j]);
}
}
// /*打印A[m][s]*/
// for(int i=0;i<3;i++){
// for(int j=0;j<3;j++){
// printf("%d ",a[i][j]);
// }
// printf("\n");
// }
int row1=,row2=,row3=,pol1=,pol2=,pol3=,Xie1=,Xie2=;
row1 = a[][]+a[][]+a[][];
row2 = a[][]+a[][]+a[][];
row3 = a[][]+a[][]+a[][]; pol1 = a[][]+a[][]+a[][];
pol2 = a[][]+a[][]+a[][];
pol3 = a[][]+a[][]+a[][]; Xie1 = a[][]+a[][]+a[][];
Xie2 = a[][]+a[][]+a[][];
// printf("%d, %d, %d, %d, %d, %d, %d, %d\n",row1,row2,row3,pol1,pol2,pol3,Xie1,Xie2);
for(int i=;i<;i++){
if(row1 == row2 == row3 == pol1 == pol2 == pol3 == Xie1 == Xie2){
printf("");
break;
}else{
printf("");
break;
}
}
}

方案二:

 #include<stdio.h>
int main(){
int sum=,k=;
int s[]={};//结果数组,并赋初值为0
/*定义二维数组*/
int a[][];
int i,j;
/*录入A[m][s]*/
for(i=;i<;i++){
sum=;//每输入一行时sum置为0
for(j=;j<;j++){
scanf("%d",&a[i][j]);
sum = sum+a[i][j];
}
s[k++] = sum;//每行的和 ,这个比较好理解
} for(sum=,i=;i<;i++){
sum=;
for(j=;j<;j++){
sum+=a[j][i];
}
s[k++] = sum;//每列的和 ,联想矩阵转置,也好理解
} for(sum=,i=;i<;i++)
sum+=a[i][i];
s[k++] = sum;//主对角线元素和 s[k++] = a[][]+a[][]+a[][];//副对角线元素和 //类似于选择排序的遍历
bool flag=true;
for(i=;i<k-;i++){
for(j=i+;j<k;j++){
if(s[i] != s[j]){
flag=false;//不相等则flag为假
}
}
}
if(flag)//若flag真
printf("");
else
printf("");
return ;
}
 
05-08 15:47