您的位置:首页 > 其它

HDU 2660 Accepted Necklace

2012-09-22 19:48 148 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2660

做下这道二维费用的问题。。。。。

结果自己把两个维数代表的东西都搞反了,最重要的是TM的样例过了。。。

然后自己就泪奔。。。。

最后看别人题解,和自己是一样的啊。。。

然后就仔细看了下代码,过了。

内循环其实是可以互换循环的位置的。

View Code

#include <iostream>
#include <string.h>
using namespace std;
const int max_number = 25;
const int max_weight = 1005;
int ans[max_number][max_weight],v[max_number],w[max_number];
int main()
{
int t,n,k,i,j,l,m;
cin>>t;
while(t--)
{
cin>>n>>k;
for(i=0;i<n;i++)
cin>>v[i]>>w[i];
cin>>m;
memset(ans,-1,sizeof(ans));
for(j=0;j<=max_weight;j++)
ans[0][j]=0;  //哪一维的要求,就初始化哪一维
for(i=0;i<n;i++)
{
for(j=m;j>=w[i];j--)
for(l=k;l>0;l--)
if(ans[l-1][j-w[i]]+v[i]>ans[l][j])
ans[l][j]=ans[l-1][j-w[i]]+v[i];
}
cout<<ans[k][m]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: