HDU 2614 Beat 深搜DFS

这道题目还是比较水的,但是题意理解确实费了半天劲,没办法 谁让自己是英渣呢!

题目大意:

猪脚要解决问题, 他有个习惯,每次只解决比之前解决过的问题的难度要大。

他给我们一个矩阵  矩阵的 i 行 j 列表示 解决完第 i 个问题后再解决第 j 个问题 花费时间为 T[i][j] 也就是 题目的难度。

并且他是从第0个问题开始解决的,第0个问题花费的时间为 0

 

下面是代码 :

 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 #include<math.h>

 4 #include<queue>

 5 #include<string.h>

 6 #include<iostream>

 7 #include<vector>

 8 using namespace std;

 9 int mapz[20][20];

10 int vis[20]={0}, n;

11 int maxn;

12 void DFS(int k,int a,int num);

13 int main()

14 {

15     while(scanf("%d",&n) != EOF)

16     {

17         for(int i=0; i<n; i++)

18         {

19             for(int j=0; j<n; j++)

20                 scanf("%d",&mapz[i][j]);

21         }

22         maxn = 0;

23         vis[0] = 1;

24         DFS(0,0,1);

25         vis[0] = 0;

26 

27         printf("%d\n",maxn);

28     }

29     return 0;

30 }

31 

32 

33 void DFS(int k,int a,int num)

34 {

35     if(maxn == n)

36         return ;

37     maxn = max(maxn,num);

38     for(int i=0; i<n; i++)

39     {

40         if(!vis[i] && a <= mapz[k][i])

41         {

42             vis[i] = 1;

43             DFS(i,mapz[k][i],num + 1);

44             vis[i] = 0;

45         }

46     }

47 }

 

你可能感兴趣的:(HDU)