题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1011&cid=26931
#include<stdio.h>
int a[16][16],b[16]={0},n,max;
int dfs(int p,int x,int num)
{
int f=0;
for(int i=1;i<=n;i++)
{
if(b[i]==0&&a[p][i]>=x)
{
b[i]=1;
f=1;
dfs(i,a[p][i],num+1);
b[i]=0;
}
}
if(f==0)
if(num>max)
max=num;
return 0;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int j=1;j<=n;j++)
for(int y=1;y<=n;y++)
scanf("%d",&a[j][y]);
b[1]=1;
max=0;
dfs(1,0,1);
printf("%d\n",max);
}
return 0;
}