level 4
喝酒123456
楼主
应该是做记录的问题,可我实在不知错在哪,55
#include <iostream>
using namespace std;
int weight[100],price[100],recond[1001][100]={0},num;
int best(int most,int money,int i)
{
if(recond[most][i]) return recond[most][i];
else if(most-weight[i]<0&&i==num-1) return recond[most][i]=money;
else if(most-weight[i]<0) return recond[most][i]=best(most,money,i+1);
else if(i==num-1) return recond[most][i]=money+price[i];
else return recond[most][i]=
max
(
recond[most-weight[i]][i+1]=best(most-weight[i],money+price[i],i+1),
recond[most][i+1]=best(most,money,i+1)
);
}
int main()
{
int most,i;
cin>>most>>num;
for(i=0;i<num;i++) cin>>weight[i]>>price[i];
cout<<best(most,0,0);
system("pause");
}
2010年11月14日 13点11分
1
#include <iostream>
using namespace std;
int weight[100],price[100],recond[1001][100]={0},num;
int best(int most,int money,int i)
{
if(recond[most][i]) return recond[most][i];
else if(most-weight[i]<0&&i==num-1) return recond[most][i]=money;
else if(most-weight[i]<0) return recond[most][i]=best(most,money,i+1);
else if(i==num-1) return recond[most][i]=money+price[i];
else return recond[most][i]=
max
(
recond[most-weight[i]][i+1]=best(most-weight[i],money+price[i],i+1),
recond[most][i+1]=best(most,money,i+1)
);
}
int main()
{
int most,i;
cin>>most>>num;
for(i=0;i<num;i++) cin>>weight[i]>>price[i];
cout<<best(most,0,0);
system("pause");
}