尋找可分配給第一個學生的最高分的 C++ 程式碼


假設我們有一個具有 n 個元素的陣列 A 和一個數字 m。有 n 個學生參加考試。最高分可能是 m。A[i] 是第 i 個學的分數。我們可以操作每個學生的分數,但必須滿足條件。分數不會超過 m,所有分數都是整數,並且所有學生的分數平均值不會改變。如果我們想最大化第一個人分數,那我們能給出的最高分是多少。

因此,如果輸入類似 A = [1, 2, 3, 4]; m = 10,那麼輸出將是 10,因為平均值為 2.5,我們可以設定分數為 [10, 0, 0, 0],其中平均值相同,但第一個的分數最高。

步驟

要解決此問題,我們將按照以下步驟操作:

sum := 0
n := size of A
for initialize j := 0, when j < n, update (increase j by 1), do:
   sum := sum + A[j]
return minimum of m and sum

示例

讓我們看看以下實現以獲得更好的理解:

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int m){
   int sum = 0;
   int n = A.size();
   for (int j = 0; j < n; j++){
      sum += A[j];
   }
   return min(m, sum);
}
int main(){
   vector<int> A = { 1, 2, 3, 4 };
   int m = 10;
   cout << solve(A, m) << endl;
}

輸入

{ 1, 2, 3, 4 }, 10

輸出

10

更新於:2022 年 3 月 11 日

466 次瀏覽

開啟你的 事業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.