1 条题解

  • 0
    @ 2023-3-3 15:17:54
    /*
    解题思路:
    
    这道题目需要输出与给定格子同行、同列、同一对角线的所有格子的位置。
    
    对于同行和同列的情况,只需要按照顺序输出即可;
    
    对于同一对角线上的格子,需要根据它们的特点进行推导。一个格子位于左上到右下对角线上,当且仅当它的行号与列号的差相等;
    
    一个格子位于左下到右上对角线上,当且仅当它的行号与列号的和相等。
    
    因此,我们可以通过遍历整个棋盘,判断每个格子是否位于同行、同列、同一对角线,如果是,则输出它的位置。
    
    */
    #include <iostream>
    using namespace std;
    
    const int MAX_N = 10;
    
    int main()
    {
        int n, i, j;
        cin >> n >> i >> j;
        // 输出同一行上格子的位置
        for (int y = 1; y <= n; y++) {
            cout << "(" << i << "," << y << ") ";
        }
        cout << endl;
        // 输出同一列上格子的位置
        for (int x = 1; x <= n; x++) {
            cout << "(" << x << "," << j << ") ";
        }
        cout << endl;
        // 输出左上到右下对角线上的格子的位置
        for (int x = 1; x <= n; x++) {
            int y = x - i + j;
            if (y >= 1 && y <= n) {
                cout << "(" << x << "," << y << ") ";
            }
        }
        cout << endl;
        // 输出左下到右上对角线上的格子的位置
        for (int x = n; x >= 1; x--) {
            int y = i + j - x;
            if (y >= 1 && y <= n) {
                cout << "(" << x << "," << y << ") ";
            }
        }
        cout << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    245
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    4
    已通过
    1
    上传者