分享一道百度笔试程序题
2017-09-12 16:33
204 查看
有个朋友去百度面试,带回来一道笔试题,题目如下:
题目大意就是这样!
初步分析挺简单的嘛,不就是当收到的礼物超过K个时,接下来每次拿到手一个礼物之后,和手里的K个礼物做对比,淘汰K个里面比当前手里礼物价值低的里面的最低的一个!
不过,写的时候还是把自己绕沟里去了,修改了一次才成功。
下面是代码:
运行结果如下:
欢迎大家交流!!
题目大意就是这样!
初步分析挺简单的嘛,不就是当收到的礼物超过K个时,接下来每次拿到手一个礼物之后,和手里的K个礼物做对比,淘汰K个里面比当前手里礼物价值低的里面的最低的一个!
不过,写的时候还是把自己绕沟里去了,修改了一次才成功。
下面是代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> int n = 0; //礼物总数 int K = 0; //要留下来的礼物数 int num = 0; //要留下来的礼物喜好值之和 int * val = NULL; //所有礼物喜好值数组指针 int main(void) { int i,x,y,temp; //输入礼物总数量 printf("present quantity(>0): "); scanf("%d", &n); printf("M will get present: n = %d !\n", n); //输入要留下来的礼物数量 printf("leave quantity(>0 && <=n): "); scanf("%d", &K); printf("M will leave present: K = %d !\n\n", K); //分配所有礼物喜好值数组内存空间,并初始化为0 val = (int *)calloc(n, sizeof(int)); if(val == NULL) { printf("calloc failed!!!!!!\n"); return -1; } //初始化随机数种子 srand((unsigned)time(NULL)); for(i = 0; i < n; i++) { //随机生成一个0~100的礼物喜好值 val[i] = (rand() % 100); printf("%d present, val: %d \n", (i + 1), val[i]); //如果收到的礼物数量还没有超过要留下来的礼物数量 if(i < K) { //那么喜好值之和就等于目前所有礼物喜好值之和 num += val[i]; } //如果收到的礼物数量超过了要留下来的礼物数量 else { //对目前所有礼物按照从大到小喜好值排序 for(x = 0; x < (i + 1); x++) { for(y = (x + 1); y < (i + 1); y++) { if(val[y] > val[x]) { temp = val[y]; val[y] = val[x]; val[x] = temp; } } } num = 0; //重置喜好值之和 //打印排序结果,并计算目前要留下来的礼物喜好值之和 printf("now rank: "); for(x = 0; x < (i + 1); x++) { if(x < K) //只需要喜好值最大的 K 个礼物 { num += val[x]; } printf("%d ", val[x]); } printf("\n"); } //打印目前要留下来的礼物的喜好值之和 printf("leave present total val: num = %d \n\n", num); } free(val); //释放礼物喜好值数组内存空间 val = NULL; return 0; }
运行结果如下:
欢迎大家交流!!
相关文章推荐
- 分享一道笔试编程题
- 今天笔试的几道题目分享-三页智力题+三页程序题
- 上海爱立信笔试题-分享(真的就一道题)
- 百度一道笔试题(求n个整数连成一排组成的最小整数)
- 百度的一道笔试题
- 一道2017年百度笔试编程题
- 分享一道Kingsoft的笔试题——Kingsoft笔试归来(应聘职位:服务器端开发工程师)
- 百度web前端的一道笔试题(CarFactory)
- 分享:程序笔试题-const变量通过指针修改问题
- 百度2014校招一道笔试题
- 百度2010校园招聘中的一道有意思的笔试题
- 一道百度2014校招笔试题
- 2015百度笔试程序题兼职递归求解
- 百度一道关于promise笔试题的总结
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- 2013年大众点评网的一道程序笔试题
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- 【2013一道百度的笔试题】两个字符串操作多少步后变成一样的(编辑距离)
- 阿里巴巴一道笔试题【程序中错误量的估算】
- 百度2013年校园招聘一道笔试题--三位密码组合问题递归求解