您的位置:首页 > 其它

hdu 2660 简单 dfs

2012-11-07 17:51 363 查看
#include<stdio.h>
int t,n,k,weight,Max,vis[22];
struct node
{
int p,w;
} p[22];
void dfs(int wei,int val,int indx,int sum)
{
if(sum==k||wei==weight)
{
if(Max<val)
{
Max=val;
}
return ;
}
for(int i=indx; i<=n; i++)
{
if(!vis[i]&&sum+1<=k&&wei+p[i].w<=weight)
{
vis[i]=1;
dfs(wei+p[i].w,val+p[i].p,i+1,sum+1);
vis[i]=0;
}
}
return ;
}
int main()
{
scanf("%d",&t);
int i,j;
while(t--)
{
scanf( "%d%d",&n,&k );
for(i=1; i<=n; i++)
{
scanf("%d%d",&p[i].p,&p[i].w);
vis[i]=0;
}
scanf("%d",&weight);
Max=0;
dfs(0,0,0,0);
printf("%d\n",Max);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: