मान लीजिए हमारे पास n x n क्रम का एक स्क्वायर बोर्ड है। अमल और बिमल एक खेल खेल रहे हैं। खेल के दौरान वे बोर्ड के वर्गों पर कुछ अज्ञात नियमों द्वारा संख्याएं लिखते हैं। वर्तमान में बोर्ड खेल समाप्त होने के बाद तत्व दिखा रहा है। यह समझने के लिए कि कौन जीता है, हमें जीतने वाले वर्गों की संख्या गिनने की आवश्यकता है। एक विशेष वर्ग जीत रहा है यदि हमें निम्न करना चाहिए। उस कॉलम को साझा करने वाले वर्गों पर सभी संख्याओं का योग ढूंढें और अलग से उस पंक्ति को साझा करने वाले वर्गों पर सभी संख्याओं का योग गणना करें। एक वर्ग एक जीतने वाला वर्ग है यदि कॉलम संख्याओं का योग पंक्ति संख्याओं के योग से सख्ती से अधिक है।
इसलिए, यदि इनपुट इस तरह है:
| 5 | 7 | 8 | 4 |
| 9 | 5 | 3 | 2 |
| 1 | 6 | 6 | 4 |
| 9 | 5 | 7 | 3 |
तो आउटपुट 6 होगा, क्योंकि:
| 5 | 7 | 8 | 4 |
| 9 | 5 | 3 | 2 |
| 1 | 6 | 6 | 4 |
| 9 | 5 | 7 | 3 |
चरण
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
t := 0 n := size of M for initialize i := 0, when i <= n - 1, update (increase i by 1), do: for initialize j := 0, when j <= n - 1, update (increase j by 1), do: s := 0 l := 0 for initialize k := 0, when k <= n - 1, update (increase k by 1), do: s := s + M[i, k] l := l + M[k, j] if l > s, then: (increase t by 1) return t
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; int solve(vector<vector<int>> M){ int t = 0; int n = M.size(); for (int i = 0; i <= n - 1; i++) for (int j = 0; j <= n - 1; j++){ int s = 0; int l = 0; for (int k = 0; k <= n - 1; k++){ s += M[i][k]; l += M[k][j]; } if (l > s) t++; } return t; } int main(){ vector<vector<int>> matrix = { { 5, 7, 8, 4 }, { 9, 5, 3, 2 }, { 1, 6, 6, 4 }, { 9, 5, 7, 3 } }; cout << solve(matrix) << endl; }इनपुट
{ { 5, 7, 8, 4 }, { 9, 5, 3, 2 }, { 1, 6, 6, 4 }, { 9, 5, 7, 3 } }आउटपुट
6