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 }

 

posted @ 2014-10-16 11:20  向前走丶不回首  阅读(176)  评论(0编辑  收藏  举报