您的位置:首页 > 其它

[HDU-2660] DFS

2012-09-30 16:28 302 查看
不需要任何剪枝的DFS

/*
* hdu-2066
* mike-w
* 2012-9-30
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXN 25
#define reset(x) memset(x, 0, sizeof(x))

int v[MAXN], w[MAXN];
int tag[MAXN];
int N, K, W, C;
int ans;

int search(int cnt, int id, int vv, int ww)
{
if(cnt==K+1)
ans=ans>vv?ans:vv;
else
{
int i;
for(i=id; i<N; i++)
if(ww+w[i]<=W)
search(cnt+1, i+1, vv+v[i], ww+w[i]);
}
return 0;
}

int main(void)
{
int i;

scanf("%d", &C);
while(C-->0)
{
reset(v);
reset(w);
reset(tag);
ans=0;

scanf("%d%d", &N, &K);
for(i=0; i<N; i++)
scanf("%d%d", v+i, w+i);
scanf("%d", &W);
search(1,0,0,0);
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  search c