用於計算物理實驗的 C++ 程式碼


假設我們正在進行物理實驗。我們給定 n 對值和閾值 k。將每對值中的第一個值新增到總值,將每對值中的第二個值也新增到另一個總值。現在,我們檢查總值是否為最小值,或者 (k - 總值) 是否為最小值。我們對兩個總值都執行此操作,然後將它們相加並列印輸出。

因此,如果輸入像 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

更新於:2022 年 3 月 29 日

676 次瀏覽

開啟你的 職業生涯

完成課程可獲得認證

開始
廣告
© . All rights reserved.