日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金

發(fā)布時(shí)間:2025/3/17 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【題目鏈接】

ybt 1839:【05NOIP提高組】誰拿了最多獎(jiǎng)學(xué)金
OpenJudge NOI 1.9 04:誰拿了最多獎(jiǎng)學(xué)金
洛谷 P1051 [NOIP2005 提高組] 誰拿了最多獎(jiǎng)學(xué)金

【題目考點(diǎn)】

1. 模擬

2. 求和

3. 求最值

【解題思路】

本題考查對(duì)稍微復(fù)雜的業(yè)務(wù)邏輯的模擬,需要答題者有良好的代碼組織能力,即每個(gè)變量的意義要明確,組織要清晰,添加合理的注釋,力求使自己寫的代碼自己要能看懂(不要覺得這是很容易的事情)。
本題可以用多個(gè)數(shù)組完成,也可以用結(jié)構(gòu)體數(shù)組完成。
(推薦使用結(jié)構(gòu)體。使用結(jié)構(gòu)體的目的就是使代碼語意更明確。這一點(diǎn)十分重要,可以幫助你少出bug,或出bug后容易查bug,能幫你節(jié)省大量時(shí)間)

【題解代碼】

解法1:使用多個(gè)數(shù)組

#include<bits/stdc++.h> using namespace std; #define N 105 string name[N];//name[i]:第i人的姓名 int money[N];//money[i]:第i人獲得的獎(jiǎng)學(xué)金 初值為0 int main() {int n, gStudy, gClass, paperNum, sum = 0, mxi = 1;//gStudy:學(xué)習(xí)成績 gClass:班級(jí)成績 paperNum:論文數(shù)量 char isLeader, isWest;//isLeader:是否是干部 isWest:是否來自西部 cin >> n;for(int i = 1; i <= n; ++i){cin >> name[i] >> gStudy >> gClass >> isLeader >> isWest >> paperNum;if(gStudy > 80 && paperNum >= 1)money[i] += 8000;if(gStudy > 85 && gClass > 80)money[i] += 4000;if(gStudy > 90)money[i] += 2000;if(gStudy > 85 && isWest == 'Y')money[i] += 1000;if(gClass > 80 && isLeader == 'Y')money[i] += 850;if(money[i] > money[mxi])//求最大值下標(biāo) mxi:獲得最多獎(jiǎng)學(xué)金的人的編號(hào)。如有相同最大值,只會(huì)取先出現(xiàn)的最大值的下標(biāo) mxi = i;sum += money[i];//sum:所有人獎(jiǎng)學(xué)金總和 }cout << name[mxi] << endl << money[mxi] << endl << sum; return 0; }

解法2:使用結(jié)構(gòu)體

#include<bits/stdc++.h> using namespace std; #define N 105 struct Student {string name;int money;Student(){}//空構(gòu)造函數(shù),如果沒有空構(gòu)造函數(shù),就無法聲明Student對(duì)象數(shù)組 Student(string _name, int gStudy, int gClass, char isLeader, char isWest, int paperNum) {//通過各種指標(biāo)構(gòu)造Student對(duì)象name = _name;money = 0;if(gStudy > 80 && paperNum >= 1)money += 8000;if(gStudy > 85 && gClass > 80)money += 4000;if(gStudy > 90)money += 2000;if(gStudy > 85 && isWest == 'Y')money += 1000;if(gClass > 80 && isLeader == 'Y')money += 850;} }; Student stu[N];//stu[i]:學(xué)生i int main() {string name;int n, gStudy, gClass, paperNum, sum = 0, mxi = 1;//gStudy:學(xué)習(xí)成績 gClass:班級(jí)成績 paperNum:論文數(shù)量 char isLeader, isWest;//isLeader:是否是干部 isWest:是否來自西部 cin >> n;for(int i = 1; i <= n; ++i){cin >> name >> gStudy >> gClass >> isLeader >> isWest >> paperNum;stu[i] = Student(name, gStudy, gClass, isLeader, isWest, paperNum);//生成對(duì)象賦值給stu[i] if(stu[i].money > stu[mxi].money)//求最大值下標(biāo) mxi:獲得最多獎(jiǎng)學(xué)金的人的編號(hào)。如有相同最大值,只會(huì)取先出現(xiàn)的最大值的下標(biāo) mxi = i;sum += stu[i].money;//sum:所有人獎(jiǎng)學(xué)金總和 }cout << stu[mxi].name << endl << stu[mxi].money << endl << sum; return 0; }

總結(jié)

以上是生活随笔為你收集整理的信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。