当前位置: 首页 > news >正文

背包问题~~!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;}
http://www.cnnetsun.cn/news/76296.html

相关文章:

  • 21、Nagios Core 安全与性能优化指南
  • ESP-HI机器狗完整教程:从零搭建你的百元级AI伙伴
  • SM3算法PHP实现实战指南:从零精通国产加密技术
  • Verible完整指南:SystemVerilog开发的5大核心利器
  • Android设备唯一标识终极指南:快速获取合规OAID的完整教程
  • WechatHook完整指南:掌握微信自动化开发终极方案
  • XDM批量文件管理终极指南:从混乱到有序的完整教程
  • Wan2.2-T2V-A14B如何赋能短视频MCN机构降本增效?
  • Git命令行快速入门:克隆Qwen-Image仓库并更新子模块
  • SQLServer2019存储音乐特征向量:为ACE-Step提供数据库支持
  • 腾讯混元推出HunyuanVideo-Foley,开启智能音效新时代
  • Apk Pure安卓用户如何运行EmotiVoice语音合成APK
  • 前后端分离党员学习交流平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 实战指南:如何用Porcupine构建终极本地唤醒词解决方案
  • SpringBoot+Vue 高校科研信息管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 12、Ubuntu系统文件管理全攻略
  • 从零开始使用Kotaemon打造生产级检索增强生成应用
  • 22、OpenOffice.org Writer:功能强大的文档处理工具
  • Linux环境下编译Kotaemon源码:C#与C++混合开发避坑指南
  • FaceFusion + Tabby终端工具:提升开发者本地调试效率
  • 33、SQL Server Always On 可用性组:架构、配置与应用详解
  • SpringBoot+Vue 二手物品交易bootpf平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 15、PHP与MySQL实现用户认证的综合指南
  • ComfyUI与Buildah镜像构建集成:轻量级CI/CD
  • LobeChat与百度语义理解API联合调用实践
  • Lostlife2.0下载官网之外的选择:EmotiVoice开源TTS更胜一筹?
  • 15、工业网络物理系统的大数据分析与机器学习
  • 为什么开发者都在用LobeChat替代ChatGPT?
  • 企业级房屋租赁管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 从GitHub克隆到本地运行:EmotiVoice语音合成模型一键部署教程