#include "stdio.h"
#define MAX 100
sort(int n,float a[MAX],float b[MAX])
{
int j,p,h,k,q;
float t1,t2,t3,c[MAX];
for(k=1;k<=n;k++)
c[k]=a[k]/b[k];
q=1;
// for(h=n ;h>1;h=p)
for(h=1;h<=n;h++)
{
for(j=1;j<n;j++)
// for(p=j=1;j<h;j++)
if(c[j]<c[j+1])
{
t1=a[j];a[j]=a[j+1];a[j+1]=t1;
t2=b[j];b[j]=b[j+1];b[j+1]=t2;
t3=c[j];c[j]=c[j+1];c[j+1]=t3;
// p=j;
}
}
p=j;
}
knapsack(int n,float limitw,float v[MAX],float w[MAX],int x[MAX])
{
float c1;
int i;
sort(n,v,w);
c1=limitw;
for(i=1;i<=n;i++)
{
if(w[i]>c1) break;
x[i]=1;
c1-=w[i];
}
}
main()
{
int n,i,x[MAX];
float v[MAX],w[MAX],totalv=0,limitw;
printf("please input n and limitw:");
scanf("%d%f",&n,&limitw);
for(i=1;i<=n;i++) x[i]=0;
for(i=1;i<=n;i++)
{
printf("please input %d thing's value and weight:/n",i);
scanf("%f%f",&v[i],&w[i]);
}
knapsack(n,limitw,v,w,x);
printf("the selection is:/n");
for(i=1;i<=n;i++)
{
printf("%d,",x[i]);
totalv+=v[i]*x[i];
}
printf("/n");
printf("the total value is: %f",totalv);
}