Trong hướng dẫn này, ta sẽ viết chương trình tìm dấu vết của ma trận được hình thành từ ma trận hàng-chủ yếu và cột-chủ yếu.
Hãy xem cách hình thành ma trận hàng-chủ yếu và cột-chủ yếu khi biết cấp ma trận.
Cấp − 3 x 3
Ma trận hàng-chủ yếu (Row Major) −
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
Ma trận cột-chủ yếu (Column Major) −
| 1 | 4 | 7 |
| 2 | 5 | 8 |
| 3 | 6 | 9 |
Ta có hai ma trận hàng-chủ yếu và cột-chủ yếu. Bây giờ ta cộng hai ma trận này. Dấu vết của ma trận kết quả là kết quả cần tìm.
Hãy viết mã giải quyết. Cần hoàn thành 4 bước:
- Tạo ma trận hàng-chủ yếu.
- Tạo ma trận cột-chủ yếu.
- Cộng hai ma trận và lưu ma trận kết quả.
- Tìm dấu vết của ma trận kết quả và in ra.
Ví dụ
Xem mã dưới đây:
#include <iostream> #include <bits/stdc++.h> #include <regex> using namespace std; int traceOfRowAndColumnMajorMatrices(int m, int n) { int row_major[m][n], column_major[m][n], addition_result[m][n], count = 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { row_major[i][j] = count; count += 1; } } count = 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { column_major[j][i] = count; count += 1; } } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { addition_result[j][i] = row_major[i][j] + column_major[i][j]; } } int trace = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (i == j) { trace += addition_result[i][j]; } } } return trace; } int main() { int m = 3, n = 3; cout << traceOfRowAndColumnMajorMatrices(m, n) << endl; return 0; }
Đầu ra
Nếu thực thi chương trình trên, bạn sẽ nhận được kết quả sau:
30
Kết luận
Nếu bạn có thắc mắc, hãy đề cập trong phần bình luận.