首页 > 试题广场 >

数字方阵

[编程题]数字方阵
 总是对数字的神秘感感到好奇。这次,他在纸上写下了  个从 的数字,并把这些数字排成了 的方阵。他惊奇地发现,这个方阵中每行、每列和两条主对角线上的数字之和都不一样。他想要更多的方阵,但他再写不出来了。于是他㕛跑来找你,请你给他一个边长为  的满足上述性质的方阵。

输入描述:
输入共一行,一个整数  ,意义同题面描述。


输出描述:
输出共  行,每行  个整数,表示答案方阵。
输出任意一种可行方案即可。
示例1

输入

3

输出

1 2 3
8 9 4
7 6 5

备注:
头像 小琢卷不动
发表于 2021-11-17 09:34:48
来写一篇随机化做法的题解。 尝试只用一次 std::random_shuffle 草过去,发现在一些小数据上确实挺容易爆炸。 那么考虑这么个事情:当 nnn 很大的时候,在整个方阵中重复次数一定不会很多,而想让重复次数很多,就必须让 nnn 变小(这样碰撞概率才会大)。 所以我们就得到了如下代码:( 展开全文