题目来源:The 7th Zhejiang University Programming Contests 

                (ZOJ 28342841)

 

Problem B  ZOJ 2835  Magic Square

水题,不解释。

 

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     int n,i,j,s1,s2,flag;
 9     int a[11][11],b[1001];
10     while(~scanf("%d",&n))
11     {
12         memset(b,0,sizeof(b));
13         if(!n)
14             break;
15         flag=0;
16         for(i=0;i<n;i++)
17             for(j=0;j<n;j++)
18             {
19                 scanf("%d",&a[i][j]);
20                 b[a[i][j]]++;
21                 if(b[a[i][j]]>1)
22                     flag=1;
23             }
24         if(flag)
25         {
26             puts("No");
27             continue;
28         }
29         s1=0;
30         for(i=0;i<n;i++)
31             s1+=a[0][i];
32         for(i=1;i<n;i++)
33         {
34             s2=0;
35             for(j=0;j<n;j++)
36                 s2+=a[i][j];
37             if(s2!=s1)
38             {
39                 flag=1;
40                 break;
41             }
42         }
43         s2=0;
44         if(!flag)
45         {
46             for(i=0;i<n;i++)
47                 s2+=a[i][i];
48             if(s2!=s1)
49                 flag=1;
50             s2=0;
51             for(i=0;i<n;i++)
52                 s2+=a[n-i-1][i];
53             if(s2!=s1)
54                 flag=1;
55         }
56         if(flag)
57             puts("No");
58         else
59             puts("Yes");
60     }
61     return 0;
62 }

相关文章: