网易游戏2013年校园招聘笔试题----货币面值

发布时间:2016-12-11 14:08:34 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"网易游戏2013年校园招聘笔试题----货币面值",主要涉及到网易游戏2013年校园招聘笔试题----货币面值方面的内容,对于网易游戏2013年校园招聘笔试题----货币面值感兴趣的同学可以参考一下。

货币面值 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:351 解决:132 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在游戏中购买各种装备来提升自己。有一天,他突然很想知道这些纸币的组合不能表示的最小面额是多少,请聪明的你来帮助小虎来解决这个财政问题吧。 输入: 输入包含多个测试用例,每组测试用例的第一行输入一个整数N(N<=100)表示流通的纸币面额数量,第二行是N个纸币的具体表示面额,取值[1,100]。 输出: 对于每组测试用例,输出一个整数,表示已经发行的所有纸币都不能表示的最小面额(已经发行的每个纸币面额最多只能使用一次,但面值可能有重复)。 样例输入: 5 1 2 3 9 100 5 1 2 4 9 100 5 1 2 4 7 100 样例输出: 7 8 15 先排序。然后从小到大相加。比如在 i 处。只要0到i-1的所有值之和都小于i-1。那么可以说所构成的值到此为止出现“断面”。即无法连续。输出前面0到i-1的值之和再加一就好了。 #include <iostream> #include <algorithm> using namespace std; int main() { int n,val[110]; while(cin>>n) { for(int i=0;i<n;i++) { cin>>val[i]; } sort(val,val+n); int sum=0; for(int i=0;i<n;i++) { if(sum+1<val[i]) break; sum+=val[i]; } cout<<sum+1<<endl; } }/*第一次的时候for循环我是这么写的 */ for(int i=0;i<n-1;i++) { sum+=val[i]; if(sum+1<val[i+1]) break; } /*这个有严重问题。 举例:n=5时 1、2、3、5、6 这样在sum=1+2+3+5=11的时候就结束循环了。输出12(sum+1) 而如果将循环改为:*/ for(int i=0;i<n;i++) { sum+=val[i]; if(sum+1<val[i+1]) break; } /*这时在遍历到i=n-1: 即sum=11+6=17的时候 会试探着比较sum+1和val[i+1]也就是val[7] 而val[7]的值是不确定的。 */

上一篇:Microsoft Virtual Labs
下一篇:2013年8月27日星期二(DEMO8_1,画线)

相关文章

相关评论