九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531
- 题目描述:
-
小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在游戏中购买各种装备来提升自己。有一天,他突然很想知道这些纸币的组合不能表示的最小面额是多少,请聪明的你来帮助小虎来解决这个财政问题吧。
- 输入:
-
输入包含多个测试用例,每组测试用例的第一行输入一个整数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
使用0-1背包来解:
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int N;
int value[101];
int dp[10001];
int max; int Compare(const void * p, const void * q){
return *(int *)p - *(int *)q;
} int Max(int a, int b){
return (a > b) ? a : b;
} int ZeroOnePack(){
int i, j;
memset(dp, 0, sizeof(dp));
for (i = 1; i <= N; ++i){
for (j = max; j >= value[i]; --j){
dp[j] = Max(dp[j], dp[j-value[i]] + value[i]);
}
}
for (i = 1; i <= max; ++i)
if (dp[i] != i)
return i;
} int main(void){
int i; while (scanf("%d", &N) != EOF){
max = 0;
for (i = 1; i <= N; ++i){
scanf("%d", &value[i]);
max += value[i];
}
qsort(value, N, sizeof(int), Compare);
printf("%d\n", ZeroOnePack());
} return 0;
}
第二种解法:
//动态规划的思想, 对于从第1个到第i个数的和total,
//如果第i+1个数大于total+1则不会组成total+1.
#include <stdio.h>
#include <stdlib.h> int Compare(const void * p, const void * q){
return *(int *)p - *(int *)q;
} int main(void){
int N;
int value[100];
int i;
int ans; while (scanf("%d", &N) != EOF){
for (i = 0; i < N; ++i){
scanf("%d", &value[i]);
}
qsort(value, N, sizeof(int), Compare);
ans = 0;
for (i = 0; i < N; ++i){
if (value[i] > ans + 1){
break;
}
else
ans += value[i];
}
printf("%d\n", ans + 1);
} return 0;
}
参考资料:背包问题九讲
九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划的更多相关文章
- Microsoft 2013校园招聘笔试题及解答
Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1. Which of the following callingconvension(s) suppo ...
- 九度OJ 1501 最大连续子序列乘积 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1501 题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 输入: 输入可能包含 ...
- 九度OJ 朋友圈 -- 并查集
题目地址:http://ac.jobdu.com/problem.php?pid=1526 题目描述: 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友.. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
随机推荐
- JavaScript要点(八) 闭包
JavaScript 变量可以是局部变量或全局变量. 私有变量可以用到闭包. 全局变量 函数可以访问由函数内部定义的变量,如: function myFunction() { var a = 4; r ...
- 【美妙的Python之中的一个】Python简单介绍及环境搭建
美妙的Python之Python简单介绍及安装 简而言之: Python 是能你无限惊喜的语言,与众不同. 1.Python: ...
- Fragment的使用简单介绍【Android】
Fragment在实际项目开发中使用的越来越多,如今简介一下 布局文件: <LinearLayout xmlns:android="http://schemas.android.com ...
- linux中文输入法
rpm方式.在安装盘上已经有各种语言包了.我们仅仅须要找到他们,并安装就能够了. 中文的是 fonts-chinese-3.02-9.6.el5.noarch.rpm fonts-ISO8859-2- ...
- [AngularJS + cryptoJS + Gravatar] Provider vs factory
Configurable Bits Need a Provider We want to be able to configure the characterLength before Tweetab ...
- android118 上拉下拉刷新列表listView实现
MainActivity.java package com.heima52.pullrefresh; import java.util.ArrayList; import com.heima52.pu ...
- MySQL使用hugepage
http://blog.csdn.net/dba_waterbin/article/details/9669929http://www.cnblogs.com/LMySQL/p/4689868.htm ...
- 文件和目录之chmod和fchmod函数
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 这两个函数使我们可以更改现有文件的访问权限: ...
- Mechanism of Loading Resources
Mechanism of Loading Resources 1. Distributed strategy 1.1. Developer guilde 1.2. Notes 2. Centraliz ...
- MySQL(8):数值类型详细分析
1.日期和时间类型 2.varchar和char 固定长度 (char) 或可变长度 (varchar) 字符数据类型. 例如: a char(10)b varchar(10)都存入'abc'a要求 ...