Cho ma trận vuông n x n, chuyển thành ma trận đường chéo (các phần tử không trên đường chéo chính và đường chéo phụ bằng 0).
Ma trận đường chéo: Chỉ giữ phần tử ở vị trí (i,i) và (i, n-i-1), các phần tử khác gán 0.
Ví dụ
Input: {{1,2,3},{4,5,6},{7,8,9}}
Output: {{1,0,3},{0,5,0},{7,0,9}}
Thuật toán
Bắt đầu
Hàm diagonal(arr[][n], a, m)
Với i=0..a-1, j=0..m-1:
Nếu i!=j VÀ i+j+1!=a -> arr[i][j] = 0
In ma trận
Kết thúc
Ví dụ code
#include <iostream>
using namespace std;
const int MAXN = 10;
void diagonal(int arr[][MAXN], int a, int m) {
for (int i = 0; i < a; i++) {
for (int j = 0; j < m; j++) {
if (i != j && i + j + 1 != a)
arr[i][j] = 0;
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < m; j++)
cout << arr[i][j] << " ";
cout << endl;
}
}
int main() {
int arr[][MAXN] = {{1,2,3},{4,5,6},{7,8,9}};
diagonal(arr, 3, 3);
return 0;
}
Kết quả
1 0 3 0 5 0 7 0 9