Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Ma trận Latin (Latin Square) C++

Ma trận Latin cấp n: ma trận n×n mỗi hàng và mỗi cột là hoán vị của 1..n.

Đặc điểm: Hàng i bắt đầu bằng n-i+1 (hoặc xoay vòng).

Ví dụ n=4

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1

Thuật toán

  • Hàng i (0-indexed): bắt đầu từ n-i, tăng dần, quay vòng.
  • Công thức: a[i][j] = (n - i + j - 1) % n + 1

Triển khai C++

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

void latinSquare(int n) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int val = (n - i + j - 1) % n + 1;
            cout << val << ' ';
        }
        cout << endl;
    }
}

int main() {
    latinSquare(4);
    return 0;
}

Kết quả

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1