中午做的一道水题~
/* zoj_2835 水题 做完这题心情有点不好,那么水的题自己却连题目都不看清楚自以为n*n的幻方里一定要以 1-n*n组成。这样还wa一次,鄙视自己。。 */ #include <iostream> #include <cstdio> #include <string.h> using namespace std; int map[15][15]; int row,col; bool flag[1100]; bool check(int n) { int temp1,temp2,i,j,sum; memset( flag,0,sizeof(flag) ); temp1=temp2=sum=0; for( i=0;i<n;i++ ) for( j=0;j<n;j++ ) if( flag[ map[i][j] ]==0 ) flag[ map[i][j] ]=1 , sum++; if( sum!=n*n ) return false; for( i=0;i<n;i++ ) temp1+=map[i][i] , temp2+=map[i][n-1-i]; if( temp1!=temp2 ) return false; for( i=0;i<n;i++ ) { row=col=0; for( j=0;j<n;j++ ) row+=map[i][j] , col+=map[j][i] ; if( row!=temp1 || col!=temp1 ) return false; } return true; } int main() { int n,i,j; while( scanf("%d",&n) && n ) { for( i=0;i<n;i++ ) for( j=0;j<n;j++ ) scanf( "%d",&map[i][j] ); if( check(n) ) printf( "Yes\n" ); else printf( "No\n" ); } return 0; }