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

파일 수를 확인하는 C++ 코드는 두 번째 날부터 유효합니다.

<시간/>

크기가 같은 두 개의 배열 X와 Y가 있다고 가정합니다. 첫 번째 날 i번째 인덱스에 X[i]개의 돌 더미가 있고 두 번째 날 i번째 인덱스에 Y[i]개의 돌이 있는 돌더미가 있습니다. 첫날 많은 회원님들이 오셨습니다. 그들은 아무 것도 하지 않거나 몇 개의 돌을 어떤 더미에 추가하거나 한 더미에서 다른 더미로 몇 개의 돌을 교환합니다. X에서 Y가 유효한지 여부를 확인해야 합니다.

따라서 입력이 X =[1, 2, 3, 4, 5]와 같으면; Y =[2, 1, 4, 3, 5]인 경우 출력은 True가 됩니다. 두 번째 더미에서 첫 번째 더미로 하나의 돌을 이동하고 네 번째 더미에서 세 번째 더미로 하나의 돌을 이동하기 때문입니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   s := s + A[i]
for initialize i := 0, when i < n, update (increase i by 1), do:
   d := d + B[i]
return (if d > s, then false, otherwise true)

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, vector<int> B){
   int n = A.size(), d = 0, s = 0;
   for (int i = 0; i < n; i++)
      s += A[i];
   for (int i = 0; i < n; i++)
      d += B[i];
   return d > s ? false : true;
}
int main(){
   vector<int> X = { 1, 2, 3, 4, 5 };
   vector<int> Y = { 2, 1, 4, 3, 5 };
   cout << solve(X, Y) << endl;
}

입력

{ 1, 2, 3, 4, 5 }, { 2, 1, 4, 3, 5 }

출력

1