Trong bài toán này, chúng ta được cung cấp một mảng stu [] có kích thước n biểu thị các điểm của học sinh trong lớp. Đối với mỗi học sinh, điểm tối đa là 100 và học sinh cần 50 điểm để vượt qua kỳ thi. Nhiệm vụ của chúng tôi là tạo ra một chương trình để tìm ra những học sinh đạt Điểm tối đa sau khi trao phần thưởng cho mọi người và không vượt quá 100 điểm.
Mô tả sự cố - Chúng ta cần chấm điểm thưởng cho những học sinh vượt qua nhưng điểm thưởng sẽ được trao cho tất cả học sinh. Nhiệm vụ của chúng tôi là tối đa hóa số học sinh có thể vượt qua kỳ thi bằng cách cho điểm thưởng nhưng không học sinh nào được điểm hơn 100 sau khi thưởng. Và sau đó trả về số học sinh đậu tối đa.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào
stu[] = {45, 32, 78, 10, 53, 67}
Đầu ra
5
Giải thích
All students passed are : 45 + 22 = 67 32 + 22 = 54 78 + 22 = 100 53 + 22 = 75 67 + 22 = 89
Phương pháp tiếp cận giải pháp
Để giải quyết vấn đề, chúng ta cần cho điểm học sinh nhưng cần lưu ý một điều là điểm tối đa của bất kỳ học sinh nào không được vượt quá 100. Vì vậy, phần thưởng tối đa có thể được trao là
Student with max marks(M) + bonus = 100 Bonus = 100 − M
Sau đó, chúng tôi sẽ cộng phần thưởng này vào điểm hiện tại của học sinh. Nếu vượt quá 50, học sinh đậu. Kết quả sẽ là tổng số học sinh như vậy.
Thuật toán
Khởi tạo
passCount = 0;
Bước 1 -
Find the student with maximum marks, maxMarks.
Bước 2 -
Calculate bonus that can be given to all students, bonus = 100 − maxMarks.
Bước 3 -
Loop for i −> 0 to n−1
Bước 3.1 -
if(stu[i] + bonus >= 50), passCount++.
Bước 4 -
return passCount.
Ví dụ
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
#include<iostream> using namespace std; int calcPassCount(int stu[], int n) { int maxMarks = stu[0]; for(int i = 1; i < n; i++){ if(stu[i] > maxMarks) maxMarks = stu[i]; } int bonusMarks = 100 − maxMarks; int passCount = 0; for(int i=0; i<n; i++) { if(stu[i] + bonusMarks >= 50) passCount ++; } return passCount; } int main() { int stu[] = {45, 32, 78, 10, 53, 67}; int n = sizeof(stu)/sizeof(stu[0]); cout<<"The Maximum students to pass after giving bonus to everybody is "<<calcPassCount(stu, n); return 0; }
Đầu ra
The Maximum students to pass after giving bonus to everybody is 5