C++程式碼,用於查詢方形棋盤上獲勝方格的分數
假設我們有一個n x n階的方形棋盤。Amal和Bimal正在玩一個遊戲。在遊戲中,他們根據某些未知規則在棋盤的方格上寫數字。目前,棋盤顯示的是遊戲結束後出現的元素。為了瞭解誰贏了,我們需要計算獲勝方格的數量。如果滿足以下條件,則某個方格為獲勝方格:找到所有與該列共享的方格上的數字之和,並分別計算所有與該行共享的方格上的數字之和。如果列數字之和嚴格大於行數字之和,則該方格為獲勝方格。
因此,如果輸入如下所示:
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
廣告