讨论 / 怎么最后两个点总不能过啊
1RenQing 2012-02-17 14:14:00
点我顶贴 收藏 删除
大家怎么做的

测试结果9: 测试结果错误.错误结果为:6151

正确结果应为:6152

测试结果10: 测试结果错误.错误结果为:345851

正确结果应为:345864

#1 lzn@2012-02-06 17:33:00
回复 删除
答案要把动归数组最后一维扫一遍
#2 1RenQing@2012-02-17 14:14:00
回复 删除
回复 沙发lzn 的帖子

可以用搜索吗,我用的是搜索

#include<iostream>

using namespace std;

int c[101],r[101],n,m;int ma=0;

void dfs(int sum,int ans){

int i;

bool p=0;

for(i=1;i<=n;i++)

if(sum/c[i]!=0) {p=1;dfs(sum-sum/c[i]*c[i],ans+sum/c[i]*r[i]-sum/c[i]*c[i]);}

if(p==0&&ans+sum>ma) ma=ans+sum;

}

int main()

{

int i;

cin>>n>>m;

for(i=1;i<=n;i++)

{

cin>>c[i]>>r[i];

}

dfs(m,0);

cout<<ma<<endl;

system("pause");

return 0;

}

查看更多回复
提交回复