满意答案
24k纯真爱l
2013.11.07
采纳率:42% 等级:12
已帮助:9552人
#include
#define N 30
int xiangzi(int n ,int V ,int a[]) //楼主后面的Vo数组必须放进递归函数里面或定义成全局数组 另外h[n]什么情况??
{
int minv,t,m=V;
if(n==0)
{
if(a[n]<=V) // V是剩余空间。minv是所生最小空间,是待求变量,而不是已知的 ,不能V
minv=V-a[n];
else
minv=V;
}
else
{
t=xiangzi(n-1,V,a);
if(a[n]<=V) //可能a[n]比V大 如果按楼主的程序没判断 那么此时m必定小于0,最后的minv肯定是会小雨0的。应该先判断 排除这种情矿。因此前面定义m的时候可以初始化m=V;
m=xiangzi(n-1,V-a[n],a); /*考虑选择这个物体的情况*/
if(t
minv=t;
else
minv=m;
}
return minv;
}
void main()
{
int V;
int n,i,m,min;
int Vo[N];
printf("箱子的容量V为:");
scanf("%d",&V);
printf("物品的种类数为:");
scanf("%d",&n);
printf("物品的体积分别为:\n");
for(i=0;i
scanf("%d",&Vo[i]); //"%d "改成“%d” d后面的空格去掉。不好意思 我学的c++,c的语法不怎么东, 只是调试出来了,不知道原因,可能语法问题吧。
min=xiangzi(n-1,V,Vo);
printf("%d\n",min); //另外别忘了输出
system("pause");
}
就这样了。。。
00分享举报