}
if(i<=n)
return b;
b+=p[i]*cleft/w[i];
}
class Object{
friend int Knaspack(int *,int *,int ,int );
public:
int operator<=(Object a)const
{return (d>=a.d);}
int ID;
float d;
};
int Knapsack(int p[],int w[],int c,int n){
int W=0;
int P=0;
Object * Q=new Object[n];
for(int i=1;i<=n;i++)
{
Q[i-1].ID=i;
Q[i-1].d=1.0*p[i]/w[i];
P+=p[i];
W+=w[i];
}
if(W<=c)
return P;
float f;
for(i=0;i
K.w[i]=w[Q[i-1].ID];
}
K.cp=0;
K.cw=0;
K.c=c;
K.n=n;
K.bestp=0;
K.Backtrack(1);
delete[] Q;
delete[] K.w;
delete[] K.p;
return K.bestp;
}
void main(){
int *p,*w,c,n;
cout<<"ÇëÊäÈëÎïÆ·Êý:";
cin>>n;
cout<<"ÇëÊäÈë±³°üÊýÁ¿:";
cin>>c;
w=new int [n+1];
w[0]=0;
cout<<"ÇëÊäÈëÎïÆ·ÖØÁ¿:";
for(int i=1;i<=n;i++)
cin>>w[i];
p=new int [n+1];
p[0]=0;
cout<<"ÇëÊäÈëÎïÆ·¼ÛÖµ:";
for( i=1;i<=n;i++)
cin>>p[i];
cout<<"×îÓÅÖµ:"<