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

In ma trận hình chữ nhật đồng tâm C++

In ma trận (2n-1)×(2n-1) dạng đồng tâm. Ví dụ n=4: viền ngoài toàn 4, bên trong toàn 3, tiếp 2, tâm là 1.

Xây dựng từng hàng

Ma trận đối xứng. In nửa trên (0 đến n-1): giảm từ n đến n-i, lặp n-i, tăng lại. Nửa dưới đối xứng ngược lại.

Ví dụ minh họa

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

void printConcentric(int n) {
    int size = 2*n - 1;
    
    // Nua tren
    for (int i = 0; i < n; i++) {
        int val = n;
        for (int j = 0; j < i; j++) cout << val-- << ' ';
        for (int j = 0; j < size - 2*i; j++) cout << n-i << ' ';
        val = n-i+1;
        for (int j = 0; j < i; j++) cout << val++ << ' ';
        cout << '\n';
    }
    // Nua duoi
    for (int i = n-2; i >= 0; i--) {
        int val = n;
        for (int j = 0; j < i; j++) cout << val-- << ' ';
        for (int j = 0; j < size - 2*i; j++) cout << n-i << ' ';
        val = n-i+1;
        for (int j = 0; j < i; j++) cout << val++ << ' ';
        cout << '\n';
    }
}

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

Kết quả

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