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 【一本通】简单的背包问题(搜索)的更多相关文章

  1. python--selenium简单模拟百度搜索点击器

    python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...

  2. xpath教程一---简单的标签搜索

    工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests[推荐安装,从网页上获取网页代码练手,再好不过了] 讲解 网页代码都是成对的标签, ...

  3. 【动态规划】【C/C++】简单的背包问题

    简单的背包问题 背包问题动态规划中非常经典的一个问题,本文只包含01背包,完全背包和多重背包.更加详尽的背包问题的讲解请参考崔添翼大神的<背包九讲> 简单的01背包 问题导入:新年到了,m ...

  4. 简单的背包问题(入门)HDU2602 HDU2546 HDU1864

    动态规划,我一直都不熟悉,因为体量不够,所以今天开始努力地学习学习. 当然背包从01开始,先选择了一个简单的经典的背包HDU2602. Many years ago , in Teddy's home ...

  5. 简单搜索dfs, 简单的修剪搜索

    选择最合适的语言做一个项目是非常重要的.但,熟练的掌握自己的武器,这也是非常重要的. ========================================================= ...

  6. MapReduce 简单的全文搜索2

    上一个全文搜索实现了模糊查找,这个主要实现了精确查找,就是比如你查找mapreduce is simple那么他就只查找有这个句子的文章,而不是查找有这三个单词的文章. 这个版本需要重写反向索引,因为 ...

  7. ElasticSearch(五):简单的ElasticSearch搜索功能

    这里主要是一些简单的ElasticSearch的搜索功能,复杂的搜索,比如过滤,聚合等以后单独在写 1. 搜索全部 GET book/_search 直接搜索全部,下面是对搜索结果的详细介绍:默认情况 ...

  8. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 加入 Android 百度依赖包: 1  key:  <!--        开发人员 key --> <meta-dat ...

  9. hdu 1078 FatMouse and Cheese(简单记忆化搜索)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:给出n*n的格子,每个各自里面有些食物,问一只老鼠每次走最多k步所能吃到的最多的食物 一道 ...

随机推荐

  1. 那些年我遇到的ERP顾问

    当我写下这篇随笔的时候,算起来在我从业9年的时间里,也差不多遇到了4-5拨的ERP咨询顾问,严格来说是4家ERP顾问公司.分别是:IBM.汉得.鼎捷以及盈通金服.从实施水准.技术力量.沟通技巧.做事态 ...

  2. Jmeter Boss系统login

    之前说,想学习并且掌握自动化测试,但是,折腾过来折腾过去,逐渐意识到了,app自动化测试分为UI层面还有接口测试.(其实,功能测试就是UI+接口测试的集合,当然,只是我自己这么认为,hhhhhhh) ...

  3. Javascript编码规范,好的代码从书写规范开始,增强代码的可读性,可维护性,这是相当重要的!

    1. 前言 JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理.本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护. 虽然本文档是针对JavaScript设 ...

  4. Ch2. Loop Structure

    Ex Input some integers and output their min, max and average values (keep three decimal places). It ...

  5. C# 委托的理解

    1.什么是委托 委托可以理解为持有一个或多个方法的对象.如果执行委托的话,委托会 执行它所"持有"的方法.委托可以避免程序中大量使用if-else语句,使 程序拥有更好的扩展性. ...

  6. 机器学习:Python实现聚类算法(三)之总结

    考虑到学习知识的顺序及效率问题,所以后续的几种聚类方法不再详细讲解原理,也不再写python实现的源代码,只介绍下算法的基本思路,使大家对每种算法有个直观的印象,从而可以更好的理解函数中参数的意义及作 ...

  7. Mavnen的几种依赖关系

    学习mavnen的时候有几种依赖关系 首先,说一下maven的依赖关系用来干什么? 就是用来控制编译.测试.运行三种classpath的关系 1.compile 的范围 当依赖的scope为compi ...

  8. shared_ptr注意点

    1.原始指针不能直接使用赋值运算符对shared_ptr进行赋值运算 std::shared_ptr<int> p; p= ); //error p.reset(); //success ...

  9. 快来领取一场专门讲解UTF-8与UTF-16编码算法的GitChat活动的免费名额

    微信扫一扫,可打开该GitChat活动页面 字符编码是计算机世界里最基础.最重要.最令人困惑的一个主题之一.不过,在计算机教材中却往往浮光掠影般地草草带过,甚至连一本专门进行深入介绍的专著都找不到(对 ...

  10. iOS-swift-协议和拓展

    1 协议(protocol) 使用关键字 protocol 创建协议. protocol ExampleProtocol { var simpleDescription: String { get } ...