讨论 / C++ 通过
asfeixue 2010-07-22 01:50:00
点我顶贴 收藏 删除
#include <iostream>

using namespace std;

int N,m;

typedef struct num

{

int p; //重要度

int v; //价格

};

int main()

{

cin>>N>>m;

num *M=new num[m];

for(int i=0;i<m;i++)

cin>>M[i].v>>M[i].p;

int opt[30001]={0};

for(int i=0;i<m;i++)

for(int j=N;j>=M[i].v;j--) //找到每一个单位价格上的最优性价比

if(opt[j-M[i].v]+M[i].p*M[i].v>opt[j])

opt[j]=opt[j-M[i].v]+M[i].p*M[i].v;

cout<<opt[N]<<endl;

return 0;

}

查看更多回复
提交回复