寻找可分配给第一个学生的最高分的 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 次浏览

开启你的 事业

通过完成课程获得认证

开始
广告