news 2026/4/22 19:10:13

背包问题~~!C++

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
背包问题~~!C++

5 10 //5代表5件物品 10代表 取这5件物品种 哪几样 可以加起来为10
1 2 3 4 5

//第1件物品重量1
//第2件物品重量2
//第3件物品重量3
//第4件物品重量4
//第5件物品重量5

现在我们想,我们有一个布袋,初始状态里面是空的,意味着哪几方面信息?
第一, 重量为0
第二, 物品个数为0
第三, 总重量不等于10

以上状态我们用0来表示

接下来我们分析我们对第一个物品可以做的事,就是把他放进布袋,或不放进布袋
那们结合前面的0状态,再加上第一个物品的两个状态就可以看到以下情况:

0 0 1 0代表不取 1代表取

如果这看明白了,在对一个物品处理之后,就是处理第二个物品

是不是:

0

0 1
0 1 0 1
同样第三个,第四个也是这原理

0

0 1
0 1 0 1
0 1 0 1 0 1 0 1

如果以上能理解了,就应当有递归的感觉了
题目要求:找到一组解即可。说明会有很多情况其实是可以满足要求的:
比如上面的案例: 1234为10 145为10 235为10
接下来用代码写函数

510//5代表5件物品 10代表 取这5件物品种 哪几样 可以加起来为1012345//第1件物品重量1//第2件物品重量2//第3件物品重量3//第4件物品重量4//第5件物品重量5现在我们想,我们有一个布袋,初始状态里面是空的,意味着哪几方面信息? 第一, 重量为0第二, 物品个数为0第三, 总重量不等于10以上状态我们用0来表示 接下来我们分析我们对第一个物品可以做的事,就是把他放进布袋,或不放进布袋 那们结合前面的0状态,再加上第一个物品的两个状态就可以看到以下情况:0010代表不取1代表取 如果这看明白了,在对一个物品处理之后,就是处理第二个物品 是不是:0010101同样第三个,第四个也是这原理001010101010101.....如果以上能理解了,就应当有递归的感觉了 题目要求:找到一组解即可。说明会有很多情况其实是可以满足要求的: 比如上面的案例:1234101451023510接下来用代码写函数#include<iostream>usingnamespacestd;typedefstruct{intindex;intvalue;}Data;inta[10000],s,n;Data data[10000];intsize;boolcheck(intSumweigth,intcnt){if(cnt==-1)returnSumweigth==s;//如没有可选,返回布袋与要求的是否一致elseif(check(Sumweigth+a[cnt],cnt-1)){//当前位置放入布袋继续分析data[size].index=cnt;data[size].value=a[cnt];size++;returntrue;}elseif(check(Sumweigth,cnt-1)){//当前位置没进包里,继续分析returntrue;}returnfalse;}voidprint(){for(inti=0;i<size;i++)cout<<"number:"<<data[i].index+1<<" weight:"<<data[i].value<<endl;//index+1 因为下标是从0开始的}voidsolve(){cin>>n>>s;for(inti=0;i<n;i++)cin>>a[i];if(check(0,n-1))print();elsecout<<"not found"<<endl;}intmain(){solve();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:46:22

嘉立创EDA专业版本实操:51单片机核心板PCB绘制全过程

一&#xff1a;前言 前两周在我们广州大学智能车协会的课程中&#xff0c;讲解了DCDC降压电路的绘制&#xff0c;并讲到了关于嘉立创EDA专业版的使用&#xff0c;但是在这个过程中我没有学的很懂。出于对自身的要求&#xff0c;我希望我自己不落后于别人&#xff0c;并且我…

作者头像 李华
网站建设 2026/4/19 23:56:44

电子签名组件终极指南:Vue Signature Pad完全使用手册

Vue Signature Pad 是一个基于 Vue.js 的电子签名组件&#xff0c;它封装了 signature_pad 库&#xff0c;为开发者提供了简单易用的电子签名功能。无论您是需要实现合同签署、表单确认还是移动端签名&#xff0c;这个组件都能完美胜任。 【免费下载链接】vue-signature-pad &a…

作者头像 李华
网站建设 2026/4/19 20:56:12

Android动态布局革命:FlexboxLayoutManager深度解析与实践指南

Android动态布局革命&#xff1a;FlexboxLayoutManager深度解析与实践指南 【免费下载链接】flexbox-layout Flexbox for Android 项目地址: https://gitcode.com/gh_mirrors/fl/flexbox-layout 还记得那些被LinearLayout和GridLayout折磨的日子吗&#xff1f;&#x1…

作者头像 李华
网站建设 2026/4/19 14:45:09

ComfyUI与Let‘s Encrypt证书集成:启用HTTPS加密

ComfyUI 与 Let’s Encrypt 证书集成&#xff1a;实现 HTTPS 安全通信 在如今 AI 应用快速走向生产环境的背景下&#xff0c;越来越多开发者选择将本地训练和推理系统部署到远程服务器上&#xff0c;以支持团队协作、客户访问或自动化服务调用。ComfyUI 作为一款基于节点图的可…

作者头像 李华
网站建设 2026/4/23 14:11:28

百度网盘加速插件使用指南:提升下载体验的方法

还在为百度网盘几十KB的下载速度而烦恼吗&#xff1f;百度网盘加速插件就是你的实用工具&#xff01;这款专为macOS设计的插件能够优化下载体验&#xff0c;让免费用户也能获得更好的下载速度。 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速…

作者头像 李华
网站建设 2026/4/23 2:39:02

快速上手SENAITE LIMS:5步搭建实验室信息管理系统

快速上手SENAITE LIMS&#xff1a;5步搭建实验室信息管理系统 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims SENAITE LIMS是一个开源的实验室信息管理系统&#xff0c;专门为各类实验室提供全面的样品…

作者头像 李华