Codeforces 1520C: Not Adjacent Matrix
Codeforces 1520C C++ 一解.
分析
只要求对 $n$ 阶方阵依次填充 $1,2,\cdots,n^2$, 一种常见的思考模式是依次将这个自然数序列填充到正确的位置. 显然对于本题一个较好的方案是间隔填充: 先从元素 $(0,0)$ (假定方阵左上角元素坐标为此, 其他类推) 开始每次间隔一格填充直至一行填充完毕, 再跳转到下一行间隔填充直至右下角元素 $(n-1,n-1)$, 接着顺序填充剩下的元素. 这样就能满足题意.
Codeforces 上编辑者博客中, MikeMirzayazov 用黑白棋盘举例, 先填充白格再填充黑格, 判定颜色依据为横纵坐标之和的奇偶性. 而以下的代码则直接将方阵拉长为长度为 $n$ 的一维数组, 直接根据下标的奇偶性填充数字, 效果类似. 当然以下的代码推出了每个坐标对应的数值的解析式, 并未利用到数组空间.
同时, 利用这样的填充方案, 显然可以得知当且仅当 $n=2$ 时找不到满足题意的方阵; 为方便编程, 这里将 $n=1$ 也做了特殊处理.
代码
1 |
|
Codeforces 1520C: Not Adjacent Matrix
# Related Posts
1.【文件格式探究】EP.2 WAV 音频文件格式
2.Codeforces 1399D: Binary String to Subsequences
3.Codeforces 1368B: Codeforces Subsequences
4.Codeforces 1430C: Numbers on Whiteboard
5.Codeforces 1419D1: Sage's Birthday (easy version)
6.Codeforces 1312B: Bogosort
7.Codeforces 1474B: Different Divisors
8.Codeforces 766A: Mahmoud and Longest Uncommon Subsequence
1.【文件格式探究】EP.2 WAV 音频文件格式
2.Codeforces 1399D: Binary String to Subsequences
3.Codeforces 1368B: Codeforces Subsequences
4.Codeforces 1430C: Numbers on Whiteboard
5.Codeforces 1419D1: Sage's Birthday (easy version)
6.Codeforces 1312B: Bogosort
7.Codeforces 1474B: Different Divisors
8.Codeforces 766A: Mahmoud and Longest Uncommon Subsequence
# Recommend Posts
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort