मान लीजिए कि हमारे पास 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