在给每个人加分且不超过C ++程序中的100分后通过的最大学生人数
在这个问题中,我们得到一个大小为n的数组stu[],表示班上学生的成绩。每位学生的最高分数是100,而学生需要50分数才能通过考试。我们的任务是创建一个程序,以在给每个人加分且不超过100分后找到通过的最大学生数。
问题描述-我们需要给学生加分才能通过,但将给所有学生加分。我们的任务是通过给予加分分数来最大化可以通过考试的学生人数,但给予加分后,任何学生分数都不会超过100。然后返回通过的最大学生人数。
让我们举个例子来了解这个问题,
输入项
stu[] = {45, 32, 78, 10, 53, 67}
输出结果
5
说明
All students passed are : 45 + 22 = 67 32 + 22 = 54 78 + 22 = 100 53 + 22 = 75 67 + 22 = 89
解决方法
为了解决这个问题,我们需要给学生打分,但要考虑的一件事是任何学生的最高分不应该超过100。因此,可以给予的最大奖金是
Student with max marks(M) + bonus = 100 Bonus = 100 − M
然后,我们会将这笔奖金添加到学生的当前成绩中。如果超过50,则学生通过。结果将是所有此类学生的人数。
算法
初始化
passCount = 0;
第1步-
Find the student with maximum marks, maxMarks.
第2步-
Calculate bonus that can be given to all students, bonus = 100 − maxMarks.
第3步-
Loop for i −> 0 to n−1
步骤3.1-
if(stu[i] + bonus >= 50), passCount++.
第4步-
return passCount.
示例
该程序说明了我们解决方案的工作原理,
#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<<"给每个人奖金后通过的最大学生数是 "<<calcPassCount(stu, n); return 0; }
输出结果
给每个人奖金后通过的最大学生数是 5