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

Code C++ tìm tổng các phần tử đặc biệt trong ma trận


Giả sử chúng ta được cho một ma trận vuông kích thước n * n. Các giá trị sau của ma trận được gọi là các phần tử đặc biệt:

  • Các giá trị nằm trên đường chéo chính.

  • Các giá trị nằm trên đường chéo phụ.

  • Các giá trị của hàng có đúng (n - 1 / 2) hàng phía trên và cùng số hàng phía dưới.

  • Các giá trị của cột có đúng (n - 1 / 2) cột bên trái và bên phải.

Chúng ta tìm tổng các giá trị đặc biệt này trong ma trận.

Ví dụ, nếu đầu vào là n = 4, mat = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}, thì đầu ra sẽ là 107.

Các bước thực hiện

Để giải quyết bài toán này, chúng ta thực hiện theo các bước sau:

res := 0 for khởi tạo i := 0, khi i < n, cập nhật (tăng i lên 1), do:    for khởi tạo j := 0, khi j < n, cập nhật (tăng j lên 1), do:    if i giống j hoặc i giống n / 2 hoặc j giống n/ 2 hoặc i + j giống n - 1, thì:       res := res + mat[i, j] in(res)

Ví dụ minh họa

Xem triển khai sau để hiểu rõ hơn:

#include <bits/stdc++.h> using namespace std; #define N 100 void solve(int n, vector<vector<int>> mat) {    int res = 0;    for (int i = 0; i < n; i++)    for (int j = 0; j < n; j++){       if (i == j || i == n / 2 || j == n / 2 || i + j == n - 1)          res += mat[i][j];    }    cout << res << endl; } int main() {    int n = 4;    vector<vector<int>> mat = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};    solve(n, mat);    return 0; }

Đầu vào

4, {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}

Đầu ra

107