CodeForces 710CMagic Odd Square(经典-奇数个奇数&偶数个偶数)

时间:2023-03-09 05:26:34
CodeForces 710CMagic Odd Square(经典-奇数个奇数&偶数个偶数)

题目链接:http://codeforces.com/problemset/problem/710/C

题目大意:输入一个奇数n,则生成n*n矩阵,要求矩阵的行、列还有斜着,所有元素之和为奇数。

解题思路:要符合行、列还有斜着,所有元素之和为奇数,则保证行、列或者斜着,有奇数个奇数 和 偶数个偶数即可。

3
2 4
3 5 7
6 8
5
2 4  6 8
10 3 5 7 12
9 11 13 15 17
14 19 21 23 16
18 20  22 24

7
2 4 6  8 10 12
14 16 3 5 7 18 20
22 9 11 13 15 17 24
19 21 23 25 27 29 31
26 33 35 37 39 41 28
30 32 43 45 47 34 36
38 40 42  44 46 48
关键点:
if( i>=(j-n/2) && i<=(j+n/2) && i+j>=((n+3)/2) && i+j<=(n+(n+1)/2) )
AC 代码:
 #include<bits/stdc++.h>
using namespace std;
int x[][];
int main()
{
int n,i,j;
while(~scanf("%d",&n))
{
int js=,os=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if( i>=(j-n/) && i<=(j+n/) && i+j>=((n+)/) && i+j<=(n+(n+)/) )
{
cout<<js<<" ";
js+=;
}
else
{
cout<<os<<" ";
os+=;
}
}
cout<<endl;
} }
return ;
}