 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ code to check given matrix is good or not
Suppose we have one n x n matrix. The matrix is said to be a good matrix where every number not equal to 1 can be expressed as the sum of a number in the same row and a number in the same column. We have to check whether given matrix is good or not.
So, if the input is like
| 1 | 1 | 2 | 
| 2 | 3 | 1 | 
| 6 | 4 | 1 | 
Then the output will be True, because the 6 in the bottom left corner is valid because when the sum of the 2 above it and the 4 on the right. The same holds for every number not equal to 1 in this matrix.
Steps
To solve this, we will follow these steps −
n := size of M for initialize i := 0, when i < n, update (increase i by 1), do: for initialize j := 0, when j < n, update (increase j by 1), do: ok := 0 if M[i, j] is not equal to 1, then: c := M[i, j] for initialize h := 0, when h < n, update (increase h by 1), do: for initialize k := 0, when k < n, update (increase k by 1), do: if c is same as M[i, h] + M[k, j], then: ok := 1 if ok is same as 0 and M[i, j] is not equal to 1, then: return false return true
Example
Let us see the following implementation to get better understanding −
#include <bits/stdc++.h> using namespace std; bool solve(vector<vector<int>> M){    int n = M.size();    int c;    bool ok;    for (int i = 0; i < n; i++){       for (int j = 0; j < n; j++){          ok = 0;          if (M[i][j] != 1)             c = M[i][j];          for (int h = 0; h < n; h++){             for (int k = 0; k < n; k++)                if (c == M[i][h] + M[k][j])                   ok = 1;          }          if (ok == 0 && M[i][j] != 1){             return false;          }       }    }    return true; } int main(){    vector<vector<int>> matrix = { { 1, 1, 2 }, { 2, 3, 1 }, { 6, 4, 1 } };    cout << solve(matrix) << endl; } Input
{ { 1, 1, 2 }, { 2, 3, 1 }, { 6, 4, 1 } }  Output
1
Advertisements
 