题目描述:小偷的背包
 
设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,...,wn。问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S。如果有满足条件的选择,则此背包有解,否则此背包问题无解。

输入

第一行为物品重量S(整数);
第二行为物品数量n,
第三行为n件物品的重量的序列。

输出

有解就输出”yes!“,没有解就输出”no!“。

样例输入

20
5
1 3 5 7 9

样例输出

yes!

思路:水题,直接DFS即可。
// 小偷的背包.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include<iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std; const int MAX = ;
int s, n,flag, w[MAX]; void DFS(int pos,int cost)
{
//cout << "pos:" << pos << "\tcur.len:" << cur.len << "\tcur.cost:" << cur.cost << endl; if (cost == s)
{
flag = ;
return;
} if (pos > n) return; DFS(pos + , cost + w[pos]); DFS(pos + , cost); } int main()
{
int sum = ;
cin >> s >> n;
for (int i = ; i < n; i++)
{
cin >> w[i];
sum += w[i];
} if (sum < s) { cout << "no!"; return ; } flag = ;
DFS(, ); if (flag) cout << "yes!";
else cout << "no!"; return ;
}

ACM-小偷的背包的更多相关文章

  1. 2079 ACM 选课时间 背包 或 母函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2079 题意:同样的学分 ,有多少种组合数,注意同样学分,课程没有区别 思路:两种方法 背包 母函数 背包: ...

  2. 【有奖】NOIP普及组模拟赛 个人邀请赛 乐多赛

    题目描述 日本数学家角谷有一个猜想:任意一个自然数,经过以下过程,最终会得到1.现在请你打印出任意一个数使用角谷猜想转换为1需要几次. 演变方式: 1.如果这个数为奇数,则将它×3+1.如果这个数为偶 ...

  3. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  4. SWUST OJ(963)

    小偷的背包 #include<stdio.h> #include<stdlib.h> int s, flag, n, *a; //主函数之外定义的变量为全局变量 void df ...

  5. codeforces 689C C. Mike and Chocolate Thieves(二分)

    题目链接: C. Mike and Chocolate Thieves time limit per test 2 seconds memory limit per test 256 megabyte ...

  6. 0-1背包问题(0-1 knapsack problem)

    0-1背包问题描述:一个正在抢劫商店的小偷发现了n个商品,第i个商品价值 vi 美元,重 wi 磅,vi 和 wi 都是整数.这个小偷希望拿走价值尽量高的商品,但他的背包最多能容纳 S 磅重的商品,S ...

  7. [2012山东ACM省赛] Pick apples (贪心,完全背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...

  8. ACM HDU Bone Collector 01背包

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 这是做的第一道01背包的题目.题目的大意是有n个物品,体积为v的背包.不断的放入物品,当然物品有 ...

  9. 3466 ACM Proud Merchants 变形的01背包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意:假设你有M元,已经Pi,Qi,Vi(i为角标,1<i<N),当M>Qi,时才 ...

随机推荐

  1. 3_07_MSSQL课程_Ado.Net_委托、事件

    委托和事件的区别? (1)委托是一个类. 事件是一个委托类型的实列. (2)委托可以在定义委托实列的类的外部触发执行.(不安全) 事件只能能在定义它的类的内部触发执行.(安全),类外部只能注册事件的响 ...

  2. LeetCode 680. Valid Palindrome II(双指针)

    题意:给定一个字符串,可以最多去掉一个字符,判断是否可以使该字符串成为一个回文串. 分析:head和tail双指针分别指向字符串首尾,如果s[head] != s[tail],则要么去掉s[head] ...

  3. ApacheDbUtilsUpdate

    ApacheDbUtilsUpdate package p1; import com.DataSourceUtil; import org.apache.commons.dbutils.QueryRu ...

  4. python--一起来盖个时间戳!!

    1.datetime import datetime print(datetime.datetime.now()) 2.time import time otherStyleTime = time.s ...

  5. uniGUI 应用程序体系结构(11)

    下图表示 uniGUI 服务器的内部结构. 每个 uniGUI 服务器都有一个ServerModule的副本, 每台服务器创建一次, 同时根据用户活动动态创建和销毁多个Session. uniGUI ...

  6. 浏览器的HTML页面展示

    当你输入一个url链接发生了什么? 下面的图是上篇文章的改造版本 电脑浏览器输入百度 打开台式电脑或者笔记本中的浏览器(IE,谷歌,360等),访问百度http://www.baidu.com,此时发 ...

  7. Numpy中 arange() 的用法

    1. 概述Numpy 中 arange() 主要是用于生成数组,具体用法如下: 2. arange()2.1 语法numpy.arange(start, stop, step, dtype = Non ...

  8. github 创建分支

    1.github网站创建 参考:https://www.cnblogs.com/autoXingJY/p/9004724.html 2.命令更新 参考:https://www.cnblogs.com/ ...

  9. css 盒子模型应用

    盒子模型应用 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  10. 安装redis集群

    1.搭建集群需要使用到官方提供的ruby脚本. 需要安装ruby的环境. 安装ruby yum install ruby yum install rubygems 2.将ruby包redis-3.0. ...