
有难度的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;
}
小弟百思不得其解,谁能帮帮我。 展开
算总价格,求最大总价格。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;
}
小弟百思不得其解,谁能帮帮我。 展开
展开全部
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;
}
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
展开全部
start+intems[num].w
num+1
start
start+intems[num].w
start
num+1
start
start+intems[num].w
start
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在题库里搜
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己能写就行了 没啥难度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询