题目地址:http://www.vijos.org/Problem_show.asp?id=1071
|
||
|
样例输出 Sample Output
2 4
首先要理解题目的意思。这个题目的意思是说,现在有一堆丢失了的牌,知道他们的总重量,然后知道每一种牌的重量,要你求到底是丢失了哪几张牌。如果无法确定则输出0,如果有很多种情况,则输出-1,否则按牌号的大小一次输出缺的牌。
由于本题目引入了重量的概念,所以既然剩下的牌的总重量知道,那我只需要用01背包方法求出怎样才能用给出的牌种组成剩下的牌,没拿进来的牌就是缺的牌。只不过我们要对这个做一个记录。记录哪些牌拿进来了,哪些没有。用一个数组judge[i]来记录是否加进来了。用数组num[v]来记录当把容量为V的正好装满的时候所用的牌的牌号i,用dp[v]来表示装满容量为v的所有方案数。初值dp[0]=1,其余为0.下面上代码更容易懂。
代码:
#include<iostream>
using namespace std;
int w[110];
bool ans[110];
int path[100010];
int dp[100010];
int main()
{
int total,n,i,j;
while(scanf("%d",&total)!=EOF)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&w[i]);
}
memset(dp,0,sizeof(dp));
memset(ans,true,sizeof(ans));
dp[0]=1;
for(i=1;i<=n;i++)
for(j=total;j>=w[i];j--)
if(dp[j-w[i]]>0)
{
if(dp[j]==0) path[j]=i;
dp[j]+=dp[j-w[i]];
}
if(dp[total]==0)
{ printf("0\n");break;}
if(dp[total]>1)
{ printf("-1\n");break;}
i=total;
while(i>0)
{
ans[path[i]]=false;
i=i-w[path[i]];
}
for(i=1;i<=n;i++)
if(ans[i]) printf("%d ",i);
printf("\n");
}
return 0;
}
子查询子查询(subquery),就是嵌套在其他查询中的查询。举例:订单存储在两个表中。每个订单包含订单编号、客户ID、订单日期,在Orders表中存储为一行。各订单的物品存储在相关的OrderItems表中。Orders表不存储顾客信息,只存储顾客ID。顾客的实际信息存储在Customers表中。现在需要列出订购物品RGAN01的所有顾客语句:SELECT cust_id FROM Orders WHERE order_num IN (SELECT order_num FROM OrderIte_mysql8.0子查询有数量限制吗
http://192.168.1.130:8050/gitlab/build_now192.168.1.130:8050为jenkins的IP和端口 转载于:https://my.os..._gitlab hook url
今天在启动Hbase 服务时,报错 ,Name or service not knownstname hadoop001,但是,在配置文件中已经,配置了Region Server,后面,想到可能是文件,格式有问题,是dos 不是unix 的因为,楼主使用了window环境编辑了该文件:vi regionservers;使用命令:set ff? 查看文件格式:set..._hbaseshell命令建表报错未知的名称或服务
一、事件流事件流描述的是从页面中接受事件的顺序1、事件流类型事件冒泡流 默认事件捕获流 2、DOM0级事件 1.给一个元素对象绑定同一个事件多次,出现覆盖问题 2.无法修改事件流的类型 3、DOM2级事件添加监听事件..._js dom元素触发mouseover
SM3算法SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,接受文本大小要小于264位,并以512位为单位分组,输出长度为256位的摘要与SHA算法大体相似。消息填充使报文长度与448mod512同余,最后64位存放报文长度。其中填充位数在1到512之间(注意没有0,也就是说一个长为448位的明文,需要再填充51..._sm3算法
在web开发中,经常会遇到一个需求是,判断变量为空(null)或者空字符串(""),从而影响页面的展示逻辑,velocity中有相应的方法可以判断。当然也可以在java后端转化到有效值再判断。以下是本人在开发中自己总结的,希望对大家有所帮助!(1)判断null#if( $name == null) something code#end(2)判断null或者false#if( !$na_velocity判断null
原文:http://www.albahari.com/threading/part2.aspx专题:C#中的多线程1同步概要Permalink在第 1 部分:基础知识中,我们描述了如何在线程上启动任务、配置线程以及双向传递数据。同时也说明了局部变量对于线程来说是私有的,以及引用是如何在线程之间共享,允许其通过公共字段进行通信。下一步是同步(synchronization)..._c# ata线程
阅读了第四章和第十七章,了解了一些全新的概念,对开发流程有了更深的体会。第四章:1原文:在结对编程模式下, 一对程序员肩并肩、 平等地、 互补地进行开发工作。 他们并排坐在一台电脑前, 面对同一个显示器, 使用同一个键盘、 同一个鼠标一起工作。 他们一起分析, 一起设计,一起写测试用例, 一起编码, 一起做单元测试,一起做集成测试, 一起写文档等。 结对编程不是程序开发者...
启动项目,报java:程序包org.springframework.boot不存在,查看项目下的Application是存在的解决:查看maven配置,配置没问题,点击maven-->runner,勾选Delegate IDE build/run actions to Maven;再次启动ok!
jad Eclipse插件很多人使用的,要是Eclipse没有的话是应该最郁闷的,今天终于找了个替代品java decompile,他的插件安装地址:http://java.decompiler.free.fr/jd-eclipse/update/还有一些不错的插件推荐下,本人亲自测试保证有用: 开发js相当不错的插件 aptana - http://update15.aptana.o
普通的for循环实现阶乘a = 1n = 5for i in range(1,n+1): a = a * iprint(a)2.python中,用while循环语句,算阶乘>>> def func(n): s=1 while(n): s*=n n-=1 return s>>> func(3)63.函数中用whil..._python阶乘n!的代码