hdu 2614(dfs)

点击打开链接


题意:

小A喜欢挑战难题,给你一个n*n的矩阵 ,map[i][j],表示在做过第i题后去做j题,将花费map[i][j]的时间,每次他选择j题目花费时间>=i的花费时间。。


直接dfs过去。。。。


#include"stdio.h"
#include"string.h"
#define N 15

int n;
int ans;
int map[N][N];
int mark[N];

//该做a题,a的时间为b,已经做了t题
void dfs(int a,int b,int t)
{
	t++;
	mark[a]=1;
	if(t>ans)ans=t;
	if(t>=n)return ;
	int i;
	for(i=0;i<n;i++)
	{
		if(map[a][i]>=b&&!mark[i])
			dfs(i,map[a][i],t);
	}
	mark[a]=0;
	return ;
}
		

int main()
{
	int i,j;
	while(scanf("%d",&n)!=-1)
	{
		ans=0;
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
				scanf("%d",&map[i][j]);
		}
		memset(mark,0,sizeof(mark));
		dfs(0,0,0);
		printf("%d\n",ans);
	}	
	return 0;
}
	


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