Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาคะแนนสูงสุดที่มอบให้นักเรียนคนแรกได้

สมมติว่าเรามีอาร์เรย์ A ที่มี n องค์ประกอบ และตัวเลข m มีนักเรียน n คนสอบ คะแนนสูงสุดคือ m A[i] คือคะแนนของนักเรียนคนที่ i เราสามารถปรับคะแนนนักเรียนแต่ละคนได้ แต่ต้องปฏิบัติตามเงื่อนไข: คะแนนไม่เกิน m คะแนนทั้งหมดเป็นจำนวนเต็ม และคะแนนเฉลี่ยของนักเรียนทั้งหมดไม่เปลี่ยนแปลง หากเราต้องการเพิ่มคะแนนนักเรียนคนแรกให้มากที่สุด คะแนนสูงสุดที่เป็นไปได้คือเท่าไหร่

เช่น ถ้าค่าที่ป้อนเข้าเป็น A = [1, 2, 3, 4]; m = 10 ผลลัพธ์จะได้ 10 เพราะค่าเฉลี่ยคือ 2.5 เราสามารถตั้งคะแนนเป็น [10, 0, 0, 0] ซึ่งค่าเฉลี่ยเท่าเดิมแต่นักเรียนคนแรกได้คะแนนสูงสุด

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

sum := 0 n := ขนาดของ A สำหรับ j := 0 เมื่อ j < n เพิ่ม j ทีละ 1 ทำ:    sum := sum + A[j] คืนค่า min(m, 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