演算法學習之路|列印排名
上機考試雖然有實時的Ranklist,但上面的排名只是根據完成的題數排序,沒有考慮 每題的分值,所以並不是最後的排名。給定錄取分線,請你寫程式找出最後通過分數線的 考生,並將他們的成績按降序列印。
輸入格式:
測試輸入包含若干場考試的資訊。每場考試資訊的第1行給出考生人數N ( 0 < N
< 1000 )、考題數M ( 0 < M < = 10 )、分數線(正整數)G;第2行排序給出第1題至第M題的正整數分值;以下N行,每行給出一
名考生的准考證號(長度不超過20的字串)、該生解決的題目總數m、以及這m道題的題號
(題目號由1到M)。
當讀入的考生人數為0時,輸入結束,該場考試不予處理。
輸出格式:
對每場考試,首先在第1行輸出不低於分數線的考生人數n,隨後n行按分數從高
到低輸出上線考生的考號與分數,其間用1空格分隔。若有多名考生分數相同,則按他們考
號的升序輸出。
輸入樣例:
4 5 25
10 10 12 13 15
CS004 3 5 1 3
CS003 5 2 4 1 3 5
CS002 2 1 2
CS001 3 2 3 5
1 2 40
10 30
CS001 1 2
2 3 20
10 10 10
CS000000000000000001 0
CS000000000000000002 2 1 2
0
輸出樣例:
3
CS003 60
CS001 37
CS004 37
0
1
CS000000000000000002 20
注意輸入時讀取問題,不涉及演算法
#include<stdio.h>
#include<string.h>
int main()
{
int num_s,num_t,sum_score,i,j;
int list[11];//題目分數
struct student
{
char id[21];//學生證
int num;//做題數量
int No[11];//題號
int score;//成績
}stu[1001],cha;
while(scanf("%d",&num_s)!=EOF)
{
if(num_s==0)
break;
scanf("%d%d",&num_t,&sum_score);
for(i=0;i<num_s;i++)
{
stu[i].score=0;
}
for(i=0;i<num_t;i++)
{
scanf("%d",&list[i]);
}
for(i=0;i<num_s;i++)
{
scanf("%s%d",stu[i].id,&stu[i].num);
for(j=0;j<stu[i].num;j++)
{
scanf("%d",&stu[i].No[j]);
}
for(j=0;j<stu[i].num;j++)
stu[i].score+=list[stu[i].No[j]-1];
}
int n=0;//達線人數
for(i=0;i<num_s;i++)
{
if(stu[i].score>=sum_score)
n++;
}
printf("%d
",n);
for(i=0;i<num_s;i++)
{
for(j=i;j<num_s;j++)
{
if(stu[j].score>stu[i].score)
{
cha=stu[i];
stu[i]=stu[j];
stu[j]=cha;
}
else if(stu[j].score==stu[i].score)
{
if(strcmp(stu[j].id,stu[i].id)<0)
{
cha=stu[i];
stu[i]=stu[j];
stu[j]=cha;
}
}
}
}
for(i=0;i<n;i++)
{
printf("%s %d
",stu[i].id,stu[i].score);
}
}
return 0;
}
相關文章
- 強化學習之路一 QLearning 演算法強化學習演算法
- 小白機器學習基礎演算法學習必經之路(下)機器學習演算法
- eggjs學習之路JS
- java學習之路Java
- Pytest學習之路
- 機器學習&深度學習之路機器學習深度學習
- 付費學習之路
- 產品學習之路
- vue-學習之路Vue
- 信安學習之路
- web前端學習之路Web前端
- linux學習之路(1)Linux
- 凡人學習Linux之路Linux
- Python 學習之路(下)Python
- go學習之路 --- 起步Go
- FPGA 學習之路:verilog學習第5天FPGA
- golang學習之路 之mapGolang
- 人工智慧學習之路人工智慧
- Android開發學習之路Android
- javaweb學習之路(3)CookieJavaWebCookie
- javaweb學習之路(1)requestJavaWeb
- 學習之路 / handle請求
- Java學習之路 -- Java怎麼學?Java
- APEX-資料匯出/列印 學習
- 拿下史丹佛和劍橋雙offer,00後的演算法學習之路演算法
- RxJS學習之路四(Operators(1))JS
- MySql 學習之路-高階2MySql
- Python學習之路5-字典Python
- Python學習之路8.1-類Python
- Android開發學習之路03Android
- Jeecg-Cloud學習之路(一)Cloud
- Kotlin協程學習之路【一】Kotlin
- 學習WCF之路,長期更新
- python學習之路—day1Python
- 演算法學習演算法
- Go語言學習(5) - 列印格式化Go
- BFS洛谷P1135 奇怪的電梯(我的演算法學習之路)演算法
- SpringCloud學習之路(一)- 走進SpringCloudSpringGCCloud
- Python學習之路3-操作列表Python