#include <iostream>
#include <cmath>
#include <algorithm>
#define maxn 55
using namespace  std;
int w,n,maxvalue=0,maxweight=0;
int value[maxn],weight[maxn],choice[maxn]={0},ans[maxn]={0};
void dfs(int index,int sumv,int sumw)//index是物品的下标,从1开始
{   if(index == (n+1))//完成对n个物品的选择{if(sumw<=w && sumv>maxvalue)//只有在可以更新最优解的时候才去更新ans[]{maxweight=sumw;maxvalue=sumv;for(int i=1;i<=n;i++)ans[i]=choice[i];}return ;}choice[index]=0;dfs(index+1,sumv,sumw);//不选第index个物品if(sumw+weight[index]<=w)//只有当加入第index后重量不超过限制,才会递归{choice[index]=1;dfs(index+1,sumv+value[index],sumw+weight[index]);}
}
int main()
{int i;printf("请依次输入物品的数量n和限重重量w:");scanf("%d %d",&n,&w);//输入物品个数n和限重质量wprintf("请依次输入这些物品的价值:");for(i=1;i<=n;i++){scanf("%d",&value[i]); }printf("请依次输入这些物品的重量:");for(i=1;i<=n;i++){scanf("%d",&weight[i]); }dfs(1,0,0);printf("所选物品的最大价值之和为:%d,最大重量之和为:%d\n",maxvalue,maxweight);for(i=1;i<=n;i++)if(ans[i]==1)printf("选取第%d个物品\n",i);return 0;
}

【数据结构实验题】0/1背包问题的递归求解(注意输出所选物品下标的方法)相关推荐

  1. 算法与数据结构实验题 10.23 寡人的难题

    算法与数据结构实验题 10.23 寡人的难题 ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的 ...

  2. 算法与数据结构实验题 10.16 被Gank的亚索

    算法与数据结构实验题 10.16 被Gank的亚索 ★实验任务 "哈撒给~",亚索一个Q打中了残血的维克多并挂上了点燃,正当亚索准备单杀维克多时,突然一声大喝!从两边草丛中窜出了两 ...

  3. 0/1背包问题-----回溯法求解

    问题描述 有n个物品和一个容量为c的背包,从n个物品中选取装包的物品.物品i的重量为w[i],价值为p[i].一个可行的背包装载是指,装包的物品总重量不超过背包的重量.一个最佳背包装载是指,物品总价值 ...

  4. 【数据结构】带动画显示过程的递归求解迷宫问题

    采用递归算法求解迷宫问题,输出从入口到出口的所有路径. 递归求解我真的也不是理解的很透,但是明显感觉到递归和栈.队列求解很像,都是树形的搜索过程. 为了直观地观察过程,补充了一个动画过程,可以用来观察 ...

  5. 算法与数据结构实验题 6.4 Summary

    ★实验任务 可怜的 Bibi 丢了好几台手机以后,看谁都像是小偷,他已经在小本本上记 下了他认为的各个地点的小偷数量. 现在我们将 Bibi 的家附近的地形抽象成一棵有根树.每个地点都是树上的 一个节 ...

  6. 算法与数据结构实验题 5.18 小孩的游戏

    ★实验任务 一群小孩子在玩游戏,游戏规则是这样子,给了一些卡片,上面有数字,现在要把卡片按照某一种序列排好,让这些数字重新链接组合成一个大数,求最大的数是什么. ★数据输入 第一行一个整数N 接下来N ...

  7. 算法与数据结构实验题 10.23 寡人的难题——Kurskal算法

    ★实验任务 寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些吃干饭的大臣给了寡人很多条要修的道路,奈何国库空虚,寡人只能选择其中一些道路, ...

  8. 算法与数据结构实验题 4.17 Maze

    ★实验任务 有一只小仓鼠身处在一个 N*M 迷宫之中,它现在想知道它最快能什么时候到达出口. 迷宫是由 ' . ' ' # ' 构成,' . '表示可以通行,'#'表示墙壁,不能通行,现在小仓鼠在'S ...

  9. 三元组顺序表表示的稀疏矩阵加法_数据结构实验题(三元组顺序表表示的稀疏矩阵转置运算)...

    题目描述: 思路: 先用三元顺序表存放稀疏矩阵 typedef struct{ int row, col; int elem;} Elem;typedef struct{ int Row, Col, ...

  10. 数据结构实验题——一元多项式计算

    一元多项式计算 程序所能达到的功能: 1.实现一元多项式的输入; 2.实现一元多项式的输出; 3.计算两个一元多项式的和并输出结果; 4.计算两个一元多项式的差并输出结果; 效果图 #include& ...

最新文章

  1. 解决SpringMvc后台接收json数据中文乱码问题
  2. 与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]
  3. 博客创办目的——————欢迎相互学习
  4. [转载]golang sync.Pool
  5. Linux web服务与HTTP协议基础概念
  6. 51单片机I2C程序
  7. Log4j2 漏洞检测工具清单
  8. 读《春秋》有感之十三:墙头草的生存技巧
  9. 北京时间校准 服务器 显示器 标准,纯干货~北京时间校准显示器实用分享
  10. Unable to find gradle task to build
  11. 词性标注英文简称及分类
  12. js截取指定字符串后面的所有字符
  13. IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)
  14. SVN the working copy needs to be upgraded svn 解决办法
  15. 算法训练一(贪心、二分)(含解题思路)(上)
  16. 如何防止网站被黑客入侵,避免网站被黑的防御方法
  17. ActionBarTest、FragmentTest
  18. ofo共享单车和摩拜单车背后的物联网技术分析
  19. python opencv 读取视频保存视频片段和图片
  20. 用OpenVINO工具包轻松实现PaddleOCR实时推理

热门文章

  1. 郝斌java教程下载_郝斌Java自学教程全集打包,视频教程下载
  2. 创建一个SpringBoot项目(IDEA版本,保姆级教程)
  3. linux夸分区软连接的作用,Linux 硬连接和软连接的原理 (in使用)
  4. swagger整合springMVC
  5. Cookie机制小记
  6. 三维偏序:CDQ分治
  7. 那些年陪伴我的老师+我期待的师生关系
  8. mvc:annotation-driven /注解意义
  9. Java调用Memcache入门
  10. Undefined index: submit in的错误处理