题目来源:The 7th Zhejiang University Programming Contests
(ZOJ 2834—2841)
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 }
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 }