您的位置:首页 > 其它

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;
}


           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: