HDU 1718 Rank 排序

解题报告:给一个班的学生的分数排序,然后判断Jack在他们班级的排名是多少,并且有如下规定,若多个人的分数相同,则他们的排名也 是相同的。说白了就是问这个班上分数比Jack高的人数有多少个,如果有n个,则输出n+1。

由于分数的范围只有0到100,我们可以定义一个数组Mark[105],然后Mark[i]存的是分数为i的人数,这样就可以了,输入结束之后,从100到0扫一遍,就是了。

 1 #include<cstdio>
 2 #include<cstring>
 3 int M[105];
 4 int main() {
 5     int num1,num,mark,x;
 6     while(scanf("%d",&num)!=EOF) {
 7         memset(M,0,sizeof(M));
 8         while(scanf("%d%d",&num1,&x),num1+x) {
 9             if(num == num1)
10             mark = x;
11             M[x] ++;    //这两步的顺序不能随意 
12         }
13         int tot = 0;
14         for(int i = 100;i>=0;--i) {
15             if(i == mark)
16             break;
17             tot += M[i];
18         }
19         printf("%d
",tot+1);
20     }
21     return 0;
22 }
View Code
原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3258598.html