有难度的C语言填空题,求大神指教~ 30

从N个已经知道重量和价格的商品中,在不能超过设定的总重量上限limit的情况下选择任意个商品计算总价格,求最大总价格。item为商品信息的构造体,其成员w,p为每个商品的... 从N个已经知道重量和价格的商品中,在不能超过设定的总重量上限limit的情况下选择任意个商品计
算总价格,求最大总价格。item为商品信息的构造体,其成员w,p为每个商品的重量和价格。N个商品存放于items中,通过调用
maxtotal(num, start)函数,条件为总重量加上start不超过limit的时候,计算在num个商品中选择任
意数量的商品计算最大总价格。
请问下面5个条横线中都应该填什么???
#include <stdio.h>
#define N 2
typedef struct _item{
int w;
int p;
} item;

int limit;
item items[N] = {
{1,100},{1,50}
};

int maxtotal(int num, int start){
int x = -1,y = -1,rval = -1;
if(num == N){
return 0;
}
if(________ > limit){
rval = maxtotal(________, ________);
}else{
x = maxtotal(num + 1,________) + items[num].p;
y = maxtotal(num + 1,________);
rval = x > y ? x : y;
}
return rval;
}

int main(void){
printf("\nWeight limit?:");
scanf("%d", &limit);
printf("Maximum total price is %d\n", maxtotal(0, 0));
return 0;
}

小弟百思不得其解,谁能帮帮我。
展开
 我来答
xiongyangju
2013-02-05 · 超过18用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:50.4万
展开全部
int maxtotal(int num, int start){
int x = -1,y = -1,rval = -1;
if(num == N){
return 0;
}
if(start> limit){ //如果超过limit 返回上一个limit
rval = maxtotal(num, start);
}else{
x = maxtotal(num + 1,start) + items[num].p; //反之,进行下一个limit加上当前item的价格的计算
y = maxtotal(num + 1,start); //进行下一个limit的计算
rval = x > y ? x : y; //上面两者进行比较,取大的
}
return rval;
}
追问
全部都填start?
执行了几次,不对呀,每次结果都是150
大玫子i
2019-08-08
知道答主
回答量:1
采纳率:0%
帮助的人:814
展开全部
start+intems[num].w

num+1
start
start+intems[num].w
start
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戴谷桖3o
2013-02-05 · TA获得超过370个赞
知道答主
回答量:75
采纳率:0%
帮助的人:19.6万
展开全部
在题库里搜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尹先国CO418
2013-02-05 · TA获得超过509个赞
知道小有建树答主
回答量:716
采纳率:0%
帮助的人:342万
展开全部
自己能写就行了 没啥难度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式