hdu 2612(dfs)

点击打开链接


题意:

有m种技能,每种技能有初始伤害值和加倍伤害血量值(即当怪物的血量《=这个值的时候会产生加倍的伤害),求最少的次数将怪物杀死。。。


简单dfs,1A。。


#include"stdio.h"
#include"string.h"
#define N 10
int mark[N];
int n,m;
struct node
{
	int a,m;
}A[N];
int min;

void dfs(int i,int t,int k)
{
	int j;
	mark[i]=1;
	if(t<=A[i].m)t-=A[i].a*2;
	else t-=A[i].a;
	k++;
	if(t<=0&&k<min)min=k;
	for(j=0;j<n;j++)
	{
		if(!mark[j]&&j!=i)
			dfs(j,t,k);
	}
	mark[i]=0;
	return ;
}


int main()
{
	int i;
	while(scanf("%d%d",&n,&m)!=-1)
	{
		for(i=0;i<n;i++)
			scanf("%d%d",&A[i].a,&A[i].m);
		memset(mark,0,sizeof(mark));
		min=1000000;
		for(i=0;i<n;i++)
		{
			if(!mark[i])
				dfs(i,m,0);
		}
		if(min==1000000)min=-1;
		printf("%d\n",min);
	}
	return 0;
}


你可能感兴趣的:(HDU,DFS)