大一C语言编程菜鸡对完全背包问题的疑问(心累)?
以下为我对完全背包问题的想法,不知道哪里有问题,但最后结果有时会出现错误,但不知道为什么会出现错误。希望有大佬能对我进行教导和对这道题目通俗点的讲解了,真心感谢!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,V,minV;
int value=0;
float a[1000],b[1000],c[1000],maxc;
int i,j,t=0;
scanf("%d %d",&N,&V);
for(i=0;i<N;i++)
scanf("%f %f",&a[i],&b[i]);
for(i=0;i<N;i++)
c[i]=b[i]/a[i];
minV=a[0];
for(i=1;i<N;i++)
if(a[i]<=minV)minV=a[i];
while(V>=minV)
{
maxc=0;
for(j=0;j<N;j++)
if(a[j]<=V&&c[j]>=maxc){maxc=c[j];t=j;}
value=b[t]+value;
V=V-a[t];
}
printf("%d",value);
return 0;
}