这道题目还是比较水的,但是题意理解确实费了半天劲,没办法 谁让自己是英渣呢!
题目大意:
猪脚要解决问题, 他有个习惯,每次只解决比之前解决过的问题的难度要大。
他给我们一个矩阵 矩阵的 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 ",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 }