尋找可分配給第一個學生的最高分的 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP