/*
*Copyright (c) 2016, 烟台大学计算机学院
*All rights reserved.
*文件名称:main.cpp
*作者:张旺华
*完成日期: 2016 年 7 月 2 日
*版本号:v1.0
*问题描述:编写一个程序递归求解背包问题
*
*/
#include <stdio.h>
#define N 100
int limitw; //限制的总重量
int totv; //全部物品的总价
int maxv;
int option[N],cop[N];
struct
{
int weight; //物品重量
int value; //物品价值
} a[N]; //存放物品的数组
int n; //物品种数
void find(int i,int tw,int tv)
{
int k;
if (tw+a[i].weight<=limitw)
{
cop[i]=1;
if (i<n-1)
find(i+1,tw+a[i].weight,tv);
else
{
for (k=0;k<n;k++)
option[k]=cop[k];
maxv=tv;
}
cop[i]=0;
}
if (tv-a[i].value>maxv)
{
if (i<n-1)
find(i+1,tw,tv-a[i].value);
els
求解背包问题
最新推荐文章于 2022-12-28 16:58:49 发布
本文探讨了如何利用递归算法有效地解决经典的背包问题。通过详细的步骤解析,展示了递归在处理这类问题上的应用和优势。
摘要由CSDN通过智能技术生成