[CF12E] Start of the season - 构造

Description

构造一个 n×n 的矩阵(n 为偶数),矩阵应该包含 0~n-1 的正整数,主对角线上的数应该都是 0,且整个矩阵应该都是对称的,每行每列上的数都是不同的。

Solution

0 1 3 2
1 0 2 3
3 2 0 1
2 3 1 0

把 (i,i) 换成 (i,n) 也就是 (n,i) 后

2 1 3
1 3 2
3 2 1

喜欢的旋转排列出现了

所以我们先构造 n-1 阶的旋转排列,然后把 (i,i) 放到 (i,n) 和 (n,i) 的位置上

#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main()
{
    ios::sync_with_stdio(false);

    int n;
    cin >> n;

    vector<vector<int>> a(n + 2, vector<int>(n + 2));
    for (int i = 1; i < n; i++)
        a[1][i] = i;
    for (int i = 2; i < n; i++)
    {
        for (int j = 1; j < n; j++)
            a[i][j] = a[i - 1][j + 1];
        a[i][n - 1] = a[i - 1][1];
    }
    for (int i = 1; i < n; i++)
        a[i][n] = a[n][i] = a[i][i], a[i][i] = 0;

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            cout << a[i][j] << " ";
        cout << endl;
    }
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2022-12-23
  • 2021-07-23
  • 2022-12-23
  • 2021-12-16
猜你喜欢
  • 2021-06-02
  • 2022-12-23
  • 2021-04-25
  • 2021-06-27
  • 2022-12-23
  • 2022-02-16
  • 2022-03-10
相关资源
相似解决方案