C语言递归方法求解背包问题

  • C语言递归方法求解背包问题,编译环境vs2019
    • 上问题:
    • 上代码:

C语言递归方法求解背包问题,编译环境vs2019

上问题:

十、背包问题的求解
假设有一个能装入总体积为T的背包和n件体积分别为w1 , w2 , … , wn 的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1 +w2 + … + wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积{1,8,4,3,5,2}时,可找到下列4组解:
(1,4,3,2)
(1,4,5)
(8,2)
(3,5,2)。

上代码:

#include<stdio.h>
int answer[100] = { 0 };//保存结果
int p = 0;//answer的指针
void bag(int *nums, int locate, int total, int len, int big) {for (int i = locate; i < len; i++) {total += answer[p++] = nums[i];//total取和,answer保存当前的数if (total < big) {//比背包小的时候进入递归bag(nums, i + 1, total, len, big);total -= answer[--p];//递归结束减去当前数,准备进入下一次循环}else if (total > big)//比背包大total -= answer[--p];else if (total == big) {//和背包相等打印结果for (int j = 0; j < p; j++)printf("%d ", answer[j]);printf("\n");total -= answer[--p];}}
}
void main() {int nums[] = { 1,8,4,3,5,2 }, big = 10, total = 0, len = sizeof(nums)/sizeof(int), locate = 0;bag(nums, locate, total, len, big);
}

C语言递归方法求解背包问题相关推荐

  1. c语言用递归求质因子,使用递归方法求解整数质因子

    使用递归方法求解整数n的质因子的步骤为: 1.找到n的最小质因子i,并将i放入集合P中: 2.n /= i:然后重复第1步,直到n本身为质数为止(即终止条件). 用公式表示如下: 实现代码如下: #i ...

  2. 第四周项目五-用递归方法求解(求n的阶乘)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年3月20日*版 本 号:v1. ...

  3. 二分法求解方程的根java_C语言二分法求解方程根的两种方法

    本文实例为大家分享了C语言二分法求解方程根的具体代码,供大家参考,具体内容如下 对于二分法求根,其实和弦截法思想很像,甚至更简单. 原理:先看如下的图 A,B两个点为跟的一个边界,通过一直缩小跟的边界 ...

  4. 将 改为c语言表达式,基于c语言表达式求解课程设计修改.doc

    基于c语言表达式求解课程设计修改 摘 要 通过数据结构这门课程,我们较深入的了解到了栈,栈是一种重要的线性结构,它广泛应用于各种软件系统中,因此在面向对象的程序设计中,它们是多型数据类型. 本次试验我 ...

  5. java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...

    本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...

  6. 动态规划在求解背包问题中的应用(JAVA)--回溯法、记忆化法

    动态规划在求解背包问题中的应用 背包问题向来是动态规划的典型问题,给定n个重量为w1,w2,...,wn,价值为v1,v2,...,vn的物品和一个称重量为W的背包,求这些物品中最优价值的一个子集,且 ...

  7. 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值。

    一.题目描述 使用C语言编程求解: 1 - 1/2 + 1/3 - 1/4 + 1/5 - ... + 1/99 - 1/100 的值. 二.分析求解 这是一道类似数列的求和问题,考察的是循环的使用, ...

  8. 【背包问题】基于matlab禁忌搜索算法求解背包问题【含Matlab源码 373期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[背包问题]基于matlab禁忌搜索算法求解背包问题[含Matlab源码 373期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付 ...

  9. 【背包问题】基于禁忌搜索算法求解背包问题附Matlab代码

    1 内容介绍 设计了一种基于禁忌搜索的遗传算法,利用遗传算法提供的并行搜索主框架,结合禁忌算法的个体串行搜索方式,能扩大搜索空间,快速实现全局优化.把基于禁忌搜索的遗传算法与启发式方法相结合用来求解背 ...

  10. c语言程序编程线性方程,C语言编程求解线性方程.doc

    C语言编程求解线性方程 本 科 专 业 学 年 论 文 题目:线性方程组求解方法比较 姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08级本科(2)班 指导教师 刘 晓 娜 完成日期:2010 ...

最新文章

  1. printf(%d, -10u); 这个输出什么呀, 0或1?
  2. .net 连接ORACLE 数据库的例子
  3. Linux学习(四)---用户管理
  4. cad自动标注界址点_CAD制图中的5个小技巧
  5. 2015 ICPC 上海
  6. HDU 5115 Dire Wolf
  7. C++动态数组简单的模拟二元堆
  8. facebook人脸照片_为什么您的Facebook照片看起来如此糟糕(以及您可以如何做)...
  9. threejs创建平面几何形状
  10. 高性能MySQL之Count统计查询
  11. 多元线性回归(java实现)
  12. 虚拟化VMware ESXi 6.7服务器安装配置
  13. C语言教程第六章:指针(3)
  14. JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台
  15. matlab-滤波系数生成频响曲线
  16. 万年历查询,一个wonderful的年历
  17. java第十一次作业
  18. WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK
  19. 中国高校人工智能专业综合排名榜单,看看你母校上榜了吗?
  20. html 5 触摸屏事件

热门文章

  1. python 编辑excel需要什么包,python操作excel的包(openpyxl、xlsxwriter)
  2. 《Go程序设计语言》- 第1章:入门
  3. 有窗体的闭合导线计算程序(C#)
  4. 微信公众号扫码登录(一)—— 获取微信公众号二维码
  5. 硬盘分区之MBR讲解
  6. vb.net VS2010编程
  7. 特征选择算法之Relief算法python实现
  8. 在linux下安装gaussian09
  9. 微服务:知识点梳理(SOA、服务拆分、服务治理、分布式事务)
  10. 学会System Generator(1)入门与安装