编辑代码

#include <iostream>
using namespace std;
int main() {
    int n = 0;
    int i = 0;
    int j = 0;
    cin >> n >> i >> j;
    int dis = 0;
    //同行
    for (int j = 1; j <= n; ++j) {
        cout << "(" << i << "," << j << ") ";
    }
    cout << endl;
    //同列
    for (int i = 1; i <= n; ++i) {
        cout << "(" << i << "," << j << ") ";
    }
    cout << endl;
    //从左上到右下输出同一对角线
    //对坐标(i,j)取较小的值,
    dis = min(
        i,
        j); //取最小值:【(i,j)与第一行(1,j)的距离;(i,j)与第一列(i,1)的距离】
    // 最左上的坐标i-1+dis,j-1+dis 从最左上点坐标,行列依次+1,直到边界
    for (int r = i - dis + 1, c = j - dis + 1; r <= n && c <= n; ++r, ++c) {
        printf("(%d,%d) ", r, c);
    }
    cout << endl;
    // cout << "------------\n";
    //从左下到右伤输出同一对角线
    dis = min(n - i, j - 1); //取最小值:(与第n行相距n-i;与第1列相距j-1)
    //最左xia的坐标i+dis,j+dis;从最左下点坐标,行依次-1,行依次+1
    for (int r = i + dis, c = j - dis; r >= 1 && c <= n; --r, ++c) {
        printf("(%d,%d) ", r, c);
    }
    cout << endl;
    return 0;
}