排序
2015-07-30 10:27
190 查看
题目链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=5
方法:排序,sort的应用
思路:这个题是浙大2005年的研究生机试题,对于研究生机试确实很变态了,因为这是里面最简单的一道题了吧,相比之下,南大的真是简单多了(虽然自己做的也很差....),思路简单,就是联系sort函数的使用以及cmp函数的写法,注意复杂的结构体的使用。
难点:sort的使用
方法:排序,sort的应用
思路:这个题是浙大2005年的研究生机试题,对于研究生机试确实很变态了,因为这是里面最简单的一道题了吧,相比之下,南大的真是简单多了(虽然自己做的也很差....),思路简单,就是联系sort函数的使用以及cmp函数的写法,注意复杂的结构体的使用。
难点:sort的使用
#include<cstdio> #include<algorithm> #include<string.h> using namespace std; struct student { char nummer[100]; int solve_num; int solve[30]; int sum; }ss[1000+100]; bool cmp(student a,student b) { if(a.sum!=b.sum) return a.sum>b.sum; else if(a.sum == b.sum) return strcmp(a.nummer,b.nummer)<0; } int main() { int stu,num,ave;//考生人数,考题数,要求平均成绩 int i,j; int score[110]={0}; while(~scanf("%d %d %d",&stu,&num,&ave)) { if(stu == 0) break; for(i = 1;i <= num;i++) scanf("%d",&score[i]); for(i = 0;i < stu;i++) { ss[i].sum = 0; scanf("%s",&ss[i].nummer); scanf("%d",&ss[i].solve_num); for(j = 0;j < ss[i].solve_num;j++) { scanf("%d",&ss[i].solve[j]); ss[i].sum = ss[i].sum+score[ss[i].solve[j]]; } } sort(ss,ss+stu,cmp); int counter = 0; for(i = 0;i < stu;i++) if(ss[i].sum>=ave) counter++; printf("%d\n",counter); for(i = 0;i < stu;i++) { if(ss[i].sum>=ave) { printf("%s",ss[i].nummer); printf(" "); printf("%d\n",ss[i].sum); } } } }
相关文章推荐
- 莫比乌斯反演
- 第七章 模态框
- Oracle保留2位小数
- android ffmpeg 编译
- oracle印象之存储过程
- 简单的CMD命令-进入到某个文件夹
- 文件管理器与设计模式-单例模式
- 【Android应用开发技术:应用组件】Fragment使用方法
- php多进程处理
- An Easy Problem?!(细节题,要把所有情况考虑到)
- 深入分析Java Web中的中文编码问题
- 河南 自考本科
- Chrome调试
- oracle 递归查询
- IE8 window.open 不支持此接口 的问题解决
- XSS CSRF
- rownum进行分页查询
- php简单生成随机数的方法
- False Sharing问题
- Java unicode 转中文