hdu 2612 Beat 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2614
DFS
题目大意:Zty要解决一些问题,这些问题根据耗时多少有难易之分(最低耗时0)。Zty的原则是不去解决比上个问题更简单的问题(相同的可以),共有n个问题(n由键盘输入),接下来的n×n矩阵描述了各问题的难度(Description里说得很清楚)。
题目分析:与以前的给地图走迷宫不一样了,但搜索思想一样用。visit数组在这里变成一维了,出来的时候要归false。找最大,所以要每次判断。
code:
#include<stdio.h>
#include<string.h>
int n,most,map[15][15];
bool vis[15];
void dfs(int cur,int m,int cnt)
{
most=most<cnt?cnt:most;
int i;
for(i=1;i<n;i++)
{
if(vis[i]||map[cur][i]<m)continue;
vis[i]=true;
dfs(i,map[cur][i],cnt+1);
vis[i]=false;
}
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
most=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&map[i][j]);
}
}
memset(vis,false,sizeof(vis));
vis[0]=true;
dfs(0,0,1);
printf("%d\n",most);
}
return 0;
}
PS:这种问题还是不太会……