Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tính toán một thí nghiệm vật lý

Giả sử, chúng ta đang thực hiện một thí nghiệm vật lý. Chúng tôi được cung cấp n cặp giá trị và một giá trị ngưỡng k. Mỗi giá trị đầu tiên của cặp được thêm vào một giá trị tổng và giá trị thứ hai của cặp cũng được thêm vào một tổng giá trị khác. Bây giờ, chúng tôi kiểm tra xem tổng giá trị là nhỏ nhất hay giá trị (k - tổng) là nhỏ nhất. Chúng tôi làm điều này cho cả hai tổng, sau đó thêm chúng và in kết quả.

Vì vậy, nếu đầu vào là n =4, k =20, giá trị ={{3, 5}, {4, 3}, {2, 1}, {4, 4}}, thì đầu ra sẽ là 14.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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))

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

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

Đầu ra

14