Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

정사각형 보드에서 승리 정사각형의 점수를 찾는 C++ 코드

<시간/>

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