简单深搜;
题意;解决问题的难度是递增的,并且每次都是先从解决第一个问题开始的;
所以用回朔搜索取最大值,注意开始的时候就先把第一个问题给标记了;
#include"stdio.h"
#include"string.h"
int map[100][100];
int visit[100];
int n,max;
void bfs(int k,int h,int t)
{
int i;
if(max<k)
max=k;
for(i=1;i<=n;i++)
{
if(map[h][i]>=t&&visit[i]==0)
{
visit[i]=1;
bfs(k+1,i,map[h][i]);
visit[i]=0;
}
}
return ;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
memset(visit,0,sizeof(visit));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&map[i][j]);
max=0;
visit[1]=1;
bfs(1,1,0);
printf("%d\n",max);
}
return 0;
}