没有懂报错的原因,不知道该怎么该,还是思路有问题
#include<stdio.h>
void swap(float z,float w,float v,int i);
int main()
{
float w[20],v[20],c,x[20],z[20];
float sum,l[20];//l放入背包的部分重量 sum价值总额和
int n,i;
sum =0;
printf("输入物品数量:");
scanf("%d",&n);
printf("输入背包容量:");
scanf("%f",&c);
printf("输入物品重量:");
for(i=0;i<n;i++)
{
scanf("%f",&w[i]);
}
printf("输入物品价值:");
for(i=0;i<n;i++)
{
scanf("%f",&w[i]);
}
//单位价值
for(i=0;i<n;i++)
{
z[i]=v[i]/w[i];
}
for(i=0;i<n;i++)
{
if(z[i]<z[i+1])
{
swap(z,w,v,i);
}
}
for(i=0;c!=0;i++)
{
if(w[i]<=c)
{
x[i]=1;
l[i]=w[i];
c=c-w[i];
sum=sum+v[i];
}
if(w[i]>c)
{
x[i]=1;
l[i]=c;
sum=sum+c*z[i];
}
}
//输出
for(i=0;i<n;i++)
{
if(x[i]==1)
{
printf("放入重量为%f,价值为%f的物品,放入重量为%f:",w[i],v[i],l[i]);
}
}
printf("总价值为:%f",sum);
}
void swap(float z,float w,float v,int i)
{
float temp;
temp=z[i];
z[i]=z[i+1];
z[i+1]=temp;
temp=w[i];
w[i]=w[i+1];
w[i+1]=temp;
temp=v[i];
v[i]=v[i+1];
v[i+1]=temp;
}