每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
输入一组学生的成绩,以及一个给定区间,输出区间中成绩最高的学生的排名和成绩最低的学生排名。
输入格式:
输入成绩的条数
输入成绩(以空格隔开)
输入要查询成绩的区间【m,n】m,n以空格隔开
输出格式:
输出最高排名和最低排名
输入样例:
1075 82 67 88 90 56 43 95 70 3260 90
输出样例:
2 7
解决方法:
(1)算法的基本思想:
通过结构体数组来存储学生的信息,然后根据成绩来进行降序排序,排序后的下标+1即是排名,再在给定区间范围内查找最大值和最小值即可。
(2)代码实现:
#include<iostream>usingnamespacestd;voidsort(int* grade,int length);intmain(void){int grade[100];int length;int m,n;cout << "请输入成绩的条数:" << endl;cin >> length;cout << "请输入成绩:" << endl;for(int i = 0; i < length; i++){cin >> grade[i]; }cout << "请输入成绩要查询的区间[m,n](直接输入m和n):" << endl;cin >> m;cin >> n; sort(grade,length);int min = length-1,max = 0;while(min >= 0 && grade[min] < m ) min--;while(max < length && grade[max] > n) max++;cout << "最高排名:" << max+1 << " 最低排名:" << min+1 << endl;return0;}voidsort(int* grade,int length){for(int i = 0; i < length-1; i++){for(int j = length-1; j > i; j--){if(grade[j] > grade[j-1]){int temp = grade[j]; grade[j] = grade[j-1]; grade[j-1] = temp; } } }}
输入一堆要完成的任务,每个任务有开始时间和要完成的时间,求把这些任务做完最快要多久。(原题是回忆版题目,题意表述不是很明确,这里简单认为个任务可以在相同时间段内进行不会冲突,时间的格式采用的是整数)输入格式:
输入任务的总数各个任务开始的时间和所需要的时间
输出格式:
所需时间输入样例:
52 105 34 96 37 7
输出样例:
12
