背包问题选中递归求解0 1背包问题
2013-05-25 15:51
295 查看
发一下牢骚和主题无关:
递归函数就是直接或直接调用自身的函数。
递归式:
当wn>C时, f(n,C)=f(n-1,C);
当wn<=C时,f(n,C) = max(f(n-1,C), vn+f(n-1, C-wn) );
初始条件为:f(i, 0) = 0; f(0,i) = 0; f(0,0) = 0;
每日一道理
“一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!
可见代价和是正确的,但是对应下标不正确,希望大家有谁可以帮忙指出犯错哪里??
文章结束给大家分享下程序员的一些笑话语录: 问路
有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
热气球上的人说:“你一定是在 IT 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。
---------------------------------
原创文章 By
背包问题和选中
---------------------------------
递归函数就是直接或直接调用自身的函数。
递归式:
当wn>C时, f(n,C)=f(n-1,C);
当wn<=C时,f(n,C) = max(f(n-1,C), vn+f(n-1, C-wn) );
初始条件为:f(i, 0) = 0; f(0,i) = 0; f(0,0) = 0;
每日一道理
“一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!
#include <stdio.h> #define MAX 100 int weight[MAX]; int price[MAX]; int y[MAX]={0}; //停止递归重要方法 int f(int t,int c){ if((t==0)||c==0){ //当物品个数为0或背包容积为0事退出 return 0; }else{ for(int i=t-1;i>=0;i--){ if(weight[i]>c){ //当物品重量大于背包容积 y[i]=0; //此时物品不被选中 return f(t-1,c); //在剩余物品中选取 }else{ int temp1=f(t-1,c); //当第t个物品没被选中时 int temp2=price[i]+f(t-1,c-weight[i]);//被选中时 if(temp1>temp2){ y[i]=0; return temp1; }else{ y[i]=1; return temp2; } } } } } int main(){ int c,t,maxval,i; printf("请输入物品的的个数:"); scanf("%d",&t); for(i=0;i<t;i++){ printf("\n请输入第%d个物品的重量和代价",i+1); scanf("%d%d",&weight[i],&price[i]); } printf("\n请输入背包的容积"); scanf("%d",&c); maxval=f(t,c); printf("j结果为:1代表选中"); for(i=0;i<t;i++){ //if(y[i]==1) printf("\n%d %d %d\n",y[i],weight[i],price[i]); } printf("总代价为:%d",maxval); return 0; }
可见代价和是正确的,但是对应下标不正确,希望大家有谁可以帮忙指出犯错哪里??
文章结束给大家分享下程序员的一些笑话语录: 问路
有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
热气球上的人说:“你一定是在 IT 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。
---------------------------------
原创文章 By
背包问题和选中
---------------------------------
相关文章推荐
- rnqoj 拔河问题 一重背包问题(递归求解,dp求解)
- 递归求解0 1背包问题
- 背包问题的递归与非递归求解
- 动态规划法——求解0-1背包问题
- 备忘录和递归解决背包问题
- 腾讯2008年笔试题-背包问题 递归和非递归解法
- N皇后问题——递归求解
- 递归求解排队进电影院问题,附带JAVA代码
- 背包问题-暴力求解
- C语言进阶-第6讲:递归法问题求解(易列写递归方程)
- 0/1背包问题的动态规划法求解 —— Java 实现
- 递归求解N皇后问题
- 2017蓝桥杯A组(正则问题)【递归求解】
- 简单背包问题-递归非递归实现
- 递归练习-House Robber问题求解
- 编程求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包问题求解)
- 递归求解整数划分问题
- 用贪心算法求解背包问题
- 用贪心法求解背包问题
- 物件捆绑 背包问题 动态规划 求解