Educational Codeforces Round 16 C 题 Magic Odd Square

原创 2016年08月30日 16:00:01



C. Magic Odd Square
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both main diagonals are odd.

Input

The only line contains odd integer n (1 ≤ n ≤ 49).

Output

Print n lines with n integers. All the integers should be different and from 1 to n2. The sum in each row, column and both main diagonals should be odd.

Examples
input
1
output
1
input
3
output
2 1 4
3 5 7
6 9 8


 题目大意为:输入一个奇数整数n,输出一个由1-n*n组成的矩阵中每个数都不相同且每行每列和两个对角线上每个元素的和都为奇数。

 此题有两个需要注意的地方:

1:1这个数放在第一行最中间一列。

2:从1-n*n,每个数放在前一个数的右上角,即行加1,列减1(特判:上一个数在第一行第n列的时候,这个数应该在第二行第n列)。如果越界,即上个数行是1,列不为n,这个数行为n,列加1;上个数列为n,行不为1,这个数列为1,行加1.

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 500
using namespace std;
int ans[N][N];
int main()
{
    int n,m,i,j,k,x,y,tx,ty;
    scanf("%d",&n);
    m=n*n;
    x=1,y=n/2+1;
    ans[x][y]=1;
    for(i=2; i<=m; i++)
    {
        if(x==1&&y!=n)
        {
            tx=n,ty=y+1;

        }
        else if(y==n&&x!=1)
        {
            tx=x-1,ty=1;
        }
        else if(x==1&&y==n)
        {
            tx=x+1,ty=y;
        }
        else
        {
            if(ans[x-1][y+1])
                tx=x+1,ty=y;
            else
                tx=x-1,ty=y+1;
        }
        ans[tx][ty]=i;
        x=tx,y=ty;
    }
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n; j++)
        {
            printf("%d ",ans[i][j]);
        }
        puts("");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Educational Codeforces Round 16 C. Magic Odd Square (构造)

链接C. Magic Odd Square题意构造一个n*n的矩阵,n为奇数,矩阵中的每个数都是1到n^2中的一个且不能重复,使得这个矩阵的每一行,每一列还有主对角线中数的和均为奇数。思路首先想到的是...

Codeforces 710 C. Magic Odd Square(构造)——Educational Codeforces Round 16

传送门Find an n × nn × n matrix with different numbers from 11 to n2n^2, so the sum in each row, colum...

CodeForces-710C Magic Odd Square(幻方问题/构造)

C. Magic Odd Square time limit per test 1 second memory limit per test 256 megabytes input sta...

Codeforces 710C Magic Odd Square【思维】

C. Magic Odd Square time limit per test 1 second memory limit per test 256 megabytes inpu...

Codeforces Problem 710C Magic Odd Square

Codeforces Problem 710C Magic Odd Square

codeforces 710C C. Magic Odd Square

Find an n × n matrix with different numbers from 1 to n2, so the sum in each row, column and both ma...

CF 710C Magic Odd Square

C. Magic Odd Square time limit per test 1 second memory limit per test 256 megabytes ...
  • wudi_00
  • wudi_00
  • 2016年09月02日 20:42
  • 73

Educational Codeforces Round 8 D - Magic Numbers 数位DP

题意很简单,偶数位为d,奇数位不为d,且能被m整除的数,叫d-magic,给定d,m,a,b,求在[a,b]上d-magic的个数。 注意 1 既是 0-magic 又是 2/3/4/5/6/7/8...

Educational Codeforces Round 8(D. Magic Numbers(数位DP))

题目链接:点击打开链接 题意:给一个m一个d, 一个字符串a和b, 问在[a,b]范围内, 有多少个可以整除m的魔法数, 魔法数的定义是, 偶数位上都是d, 奇数位上都不是d。 思路:据说是典型的...

Educational Codeforces Round 4 E. Square Root of Permutation(置换、构造)

题意: 给定N≤106的置换q,现要找到一个p2=q,多解输出任意一个,无解输出−1给定N\le10^6的置换q, 现要找到一个p^2=q, 多解输出任意一个, 无解输出-1 p2=q即是q...
  • lwt36
  • lwt36
  • 2016年02月11日 14:53
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Educational Codeforces Round 16 C 题 Magic Odd Square
举报原因:
原因补充:

(最多只允许输入30个字)