zoj 2835 Magic Square(水~)

幻方~判断是否是幻方。

 

注意,幻方的话数字不能重复。

 

真是充分用了goto语句。。

 

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> using namespace std; int map[15][15]; int main(void) { int n,a[1005]; int sum,temp; while( scanf("%d",&n)!=EOF && n ) { memset(a,0,sizeof(a)); int flag = 0; for(int i=1; i<=n; i++) for(int k=1; k<=n; k++) { scanf("%d",&map[i][k]); if( !a[map[i][k]] ) a[map[i][k]] = 1; else flag = 1; } if( flag ) { printf("No/n"); goto end; } temp = 0; for(int i=1; i<=n; i++) temp += map[1][i]; for(int i=1; i<=n; i++) { sum = 0; for(int k=1; k<=n; k++) sum += map[i][k]; if( sum != temp ) { printf("No/n"); goto end; } } for(int i=1; i<=n; i++) { sum = 0; for(int k=1; k<=n; k++) sum += map[k][i]; if( sum != temp ) { printf("No/n"); goto end; } } sum = 0; for(int i=1; i<=n; i++) sum += map[i][i]; if( sum != temp ) { printf("No/n"); goto end; } sum = 0; for(int i=1; i<=n; i++) sum += map[i][n-i+1]; if( sum != temp ) { printf("No/n"); goto end; } printf("Yes/n"); end:; } return 0; }  

你可能感兴趣的:(zoj 2835 Magic Square(水~))