CJOJ 2022 【一本通】简单的背包问题(搜索)
CJOJ 2022 【一本通】简单的背包问题(搜索)
Description
设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,…wn。 问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S。
如果有满足条件的选择,则此背包有解,并输出解。(若有多组解,输出最先找到的一组解即可)
Input
第一行物品重量为s,物品的件数n
第二行每件物品的重量(输入数据均为正整数)
Output
输出物品的序号和重量
Sample Input
5 10
1 2 3 4 5
Sample Output
number:1 wieght:1
number:4 wieght:4
number:5 wieght:5
Http
CJOJ:http://oj.changjun.com.cn/problem/detail/pid/2022
Source
递归,搜索
解决思路
简单的dfs,每次判断某个物品选或不选,注意输出顺序
不要看到背包问题就想到动归
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxN=5000;
const int inf=2147483647;
int n,S;
int Weight[maxN];
vector<int> Arr;
void dfs(int x,int sum);
int main()
{
Arr.clear();
cin>>n>>S;
for (int i=1;i<=n;i++)
cin>>Weight[i];
dfs(n,0);
cout<<"not found"<<endl;
return 0;
}
void dfs(int x,int sum)
{
/*cout<<x<<' '<<sum<<endl;
for (int i=0;i<Arr.size();i++)
cout<<Arr[i]<<' ';
cout<<endl<<endl;
*/
if (x==0)
return;
if (Weight[x]+sum<=S)
{
Arr.push_back(x);
if (Weight[x]+sum==S)
{
for (int i=Arr.size()-1;i>=0;i--)
printf("number:%d weight:%d\n",Arr[i],Weight[Arr[i]]);
exit(0);
}
dfs(x-1,Weight[x]+sum);
Arr.pop_back();
}
dfs(x-1,sum);
return;
}
CJOJ 2022 【一本通】简单的背包问题(搜索)的更多相关文章
- python--selenium简单模拟百度搜索点击器
python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...
- xpath教程一---简单的标签搜索
工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests[推荐安装,从网页上获取网页代码练手,再好不过了] 讲解 网页代码都是成对的标签, ...
- 【动态规划】【C/C++】简单的背包问题
简单的背包问题 背包问题动态规划中非常经典的一个问题,本文只包含01背包,完全背包和多重背包.更加详尽的背包问题的讲解请参考崔添翼大神的<背包九讲> 简单的01背包 问题导入:新年到了,m ...
- 简单的背包问题(入门)HDU2602 HDU2546 HDU1864
动态规划,我一直都不熟悉,因为体量不够,所以今天开始努力地学习学习. 当然背包从01开始,先选择了一个简单的经典的背包HDU2602. Many years ago , in Teddy's home ...
- 简单搜索dfs, 简单的修剪搜索
选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...
- MapReduce 简单的全文搜索2
上一个全文搜索实现了模糊查找,这个主要实现了精确查找,就是比如你查找mapreduce is simple那么他就只查找有这个句子的文章,而不是查找有这三个单词的文章. 这个版本需要重写反向索引,因为 ...
- ElasticSearch(五):简单的ElasticSearch搜索功能
这里主要是一些简单的ElasticSearch的搜索功能,复杂的搜索,比如过滤,聚合等以后单独在写 1. 搜索全部 GET book/_search 直接搜索全部,下面是对搜索结果的详细介绍:默认情况 ...
- Android 百度地图 简单实现--- 美食搜索
Android 百度地图 简单实现--- 美食 依赖包: 加入 Android 百度依赖包: 1 key: <!-- 开发人员 key --> <meta-dat ...
- hdu 1078 FatMouse and Cheese(简单记忆化搜索)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 一道 ...
随机推荐
- [HDU1001] Sum Problem
Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, ...
- jquery中html、text、val回调函数
先扫盲: 摘自菜鸟教程:jQuery 方法:text().html() 以及 val()拥有回调函数. 回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值.然后以函数新值返回您希望使 ...
- WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--02
兼容问题目录 8.IE6不支持固定定位 9.IE6下前面元素浮动,后面元素不浮动后他们之间会有间隙 10.IE6下双边距问题 11.IE67下父级有边框,子级有margin的话会不起作用 12.IE6 ...
- Java之【线程通信】--标志位练习2
定义一个线程A,输出1 - 10之间的整数,定义一个线程B,逆序输出1 - 10之间的整数,要求线程A和线程B交替输出 方法一:非标志位方法 package Homework; //1 定义一个线程A ...
- mongo查询系统
首先,我们先向集合(collections)中添加测试文档(documents).如下: > for(i=1;i<=5;i++) db.test.insert({x:i,y:i*i,z:6 ...
- Linux获取UUID
Linux内核提供有UUID生成接口: cat /proc/sys/kernel/random/uuid Linux上一切皆文件,不管什么程序,读取文件就能获取一个UUID.
- 开发Activity步骤
第一步:写一个累继承Activity第二步:重写onCreate方法第三步:在主配置文件中注册activity <activity android:name=".类名" an ...
- linux-ubuntu下fastQC的安装
1.fastqc是在Java环境下运行的:所以在安装fastqc之前,Linux下要有相应的Java运行环境(JRE).且java的版本应该在1.8.0版以上 2.java的安装:下载最新版本的Jav ...
- Myeclipse8.6注册机代码,不用到处找注册机了
import java.io.*; public class MyEclipseGen { private static final String LL = "Decompiling thi ...
- 通过LOGBACK实现每个类、包或自定义级别
项实现LOGBACK对每个包或者类或者通过自定义级别的方式实现自定义输出的日志进入制定的文件.查阅了很多资料,都没有找到行之有效的解决方案,直到看到了这篇文章http://www.360doc.com ...