前言
This Series aritcles are all based on the book 《经典算法大全》; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行实现; 目的是熟悉常用算法过程中的技巧和逻辑拓展。
提出问题
32.Algorithm Gossip: 得分排行
说明
假设有一教师依学生座号输入考试分数,现希望在输入完毕后自动显示学生分数的排行 ,当然学生的分数可能相同。
解法
基础送分题, while(cin>> grage) 结构即可。
分析和解释
代码
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define MIN 0
int main(void) {
int score[MAX+1] = {0};
int juni[MAX+2] = {0};
int count = 0, i;
do {
printf("输入分数,-1结束:");
scanf("%d", &score[count++]);
} while(score[count-1] != -1);
count--;
for(i = 0; i < count; i++)
juni[score[i]]++;
juni[MAX+1] = 1;
for(i = MAX; i >= MIN; i--)
juni[i] = juni[i] + juni[i+1];
printf("得分 排行
");
for(i = 0; i < count; i++)
printf("%d %d
", score[i], juni[score[i]+1]);
return 0;
}
拓展和关联
后记
参考书籍
- 《经典算法大全》
- 维基百科