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

물리 실험 계산을 위한 C++ 코드

<시간/>

우리가 물리학 실험을 수행하고 있다고 가정합니다. n 쌍의 값과 임계값 k가 제공됩니다. 쌍의 각 첫 번째 값은 합계 값에 추가되고 쌍의 두 번째 값도 다른 합계 값에 추가됩니다. 이제 total 값이 최소값인지 또는 (k - total) 값이 최소값인지 확인합니다. 두 합계에 대해 이 작업을 수행한 다음 더하고 출력을 인쇄합니다.

따라서 입력이 n =4, k =20, values ​​={{3, 5}, {4, 3}, {2, 1}, {4, 4}}와 같으면 출력은 14가 됩니다.

단계

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

a := 0, b = 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   a := a + first value of values[i]
   b := b + second value of values[i]
print(min((a, k - a) + minimum of b and k - b))

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

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, int k, vector<pair<int,int>> values) {
   int a = 0, b = 0;
   for(int i = 0; i < n; i++){
      a += values[i].first;
      b += values[i].second;
   }
   cout<<min(a, k - a) + min(b, k - b);
}
int main() {
   int n = 4, k = 20;
   vector<pair<int,int>> values = {{3, 5}, {4, 3}, {2, 1}, {4, 4}};
   solve(n, k, values);
   return 0;
}

입력

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

출력

14