HDU 2614 Beat (DFS)
2016-06-28 23:39
295 查看
Beat
Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1346 Accepted Submission(s): 793
[align=left]Problem Description[/align]
Zty is a man that always full of enthusiasm. He wants to solve every kind of difficulty ACM problem in the world. And he has a habit that he does not like to solve
a problem that is easy than problem he had solved. Now yifenfei give him n difficulty problems, and tell him their relative time to solve it after solving the other one.
You should help zty to find a order of solving problems to solve more difficulty problem.
You may sure zty first solve the problem 0 by costing 0 minute. Zty always choose cost more or equal time’s problem to solve.
[align=left]Input[/align]
The input contains multiple test cases.
Each test case include, first one integer n ( 2< n < 15).express the number of problem.
Than n lines, each line include n integer Tij ( 0<=Tij<10), the i’s row and j’s col integer Tij express after solving the problem i, will cost Tij minute to solve the problem j.
[align=left]Output[/align]
For each test case output the maximum number of problem zty can solved.
[align=left]Sample Input[/align]
3
0 0 0
1 0 1
1 0 0
3
0 2 2
1 0 1
1 1 0
5
0 1 2 3 1
0 0 2 3 1
0 0 0 3 1
0 0 0 0 2
0 0 0 0 0
[align=left]Sample Output[/align]
3
2
4
Hint
Hint: sample one, as we know zty always solve problem 0 by costing 0 minute.
So after solving problem 0, he can choose problem 1 and problem 2, because T01 >=0 and T02>=0.
But if zty chooses to solve problem 1, he can not solve problem 2, because T12 < T01.
So zty can choose solve the problem 2 second, than solve the problem 1.
[align=left]Author[/align]
yifenfei
[align=left]Source[/align]
奋斗的年代
[align=left]Recommend[/align]
yifenfei | We have carefully selected several similar problems for you: 1426 1258 2616 1045 1035
题解:有一个人刷题,这个人准备刷n道题,但他刷的下一道题不会比前一道刷的题要简单,至少>=的难度。Orz.....先膜一下。。。
注意:题目中的Tij就是第i行第j列代表着,刷完 i 号题目后刷 j 题目所花费的时间,如果刷 i 题目花费了2分钟,刷完 i 后刷 j 花费时间小于2分钟,这个人不会去刷这道题,他只刷花费时间大于等于2分钟的题目。Orz。。。
DFS。。。。
AC代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<queue> using namespace std; int vis[21]; int map[20][20]; int sum; int n; void dfs(int k, int num,int time) { for(int i=0;i<n;i++) { if(vis[i]==0 &&map[k][i]>=time) { vis[i]=1; dfs(i,num+1,map[k][i]); vis[i]=0; } } sum=max(sum,num); } int main() { ios::sync_with_stdio(false); while(cin>>n&&n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>map[i][j]; } } memset(vis,0,sizeof(vis)); sum=0; vis[0]=1; dfs(0,1,0); cout<<sum<<"\n"; } return 0; }
相关文章推荐