专栏文章

题解:P13348 「ZYZ 2025」未选择的路

P13348题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miotg7ma
此快照首次捕获于
2025/12/03 00:52
3 个月前
此快照最后确认于
2025/12/03 00:52
3 个月前
查看原文
AC代码:
CPP
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;

    if (n % 2 == 0) {
        // 偶数情况:沿主对角线移动
        cout << n + 1 << endl;
        for (int i = 0; i <= n; ++i) {
            cout << i << " " << i << endl;
        }
    } else {
        // 奇数情况:覆盖所有方格
        cout << n * n << endl;
        for (int i = 0; i < n; ++i) {
            if (i % 2 == 0) {
                for (int j = 0; j < n; ++j) {
                    cout << j << " " << i << endl;
                }
            } else {
                for (int j = n - 1; j >= 0; --j) {
                    cout << j << " " << i << endl;
                }
            }
        }
        cout << n << " " << n << endl;
    }

    return 0;
}
代码解释 输入处理:读取整数n。
偶数情况:
输出路径长度为n+1(因为从(0,0)到(n,n)有n+1个点)。
沿主对角线输出点坐标。
奇数情况:
输出路径长度为n²(覆盖所有n×n的方格)。
按照蛇形路径遍历所有方格:从左到右遍历偶数行,从右到左遍历奇数行。
最后输出终点(n,n)。
注意事项 奇数情况的路径构造可能需要更复杂的逻辑来确保每个方格仅被经过一次。上述代码提供了一种简单的蛇形遍历方法。
对于n=1的特殊情况,路径应为(0,0) → (1,1),覆盖1个方格(即n²=1)。

评论

0 条评论,欢迎与作者交流。

正在加载评论...