标签:des style color os io for ar div
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
3 2 4HintHint: 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.
题意:有n道题,a[i][j]表示做完i题后做j题的难度,这个人从第0题开始做,每次做不比上次题目简单的题,问他最多做多少题?
理解题意半天,解题还是比较顺利,解释在代码中
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
#define N 20
int a[N][N],n;
int ans,vis[N];
void dfs(int le,int num,int s) //le表示刚做的题,例如le=0,那么现在在第0行选择做的下一题,s是刚做题的难度
{
int i;
if(num>ans) ans=num; //num是已经做的题
for(i=0;i<n;i++)
{
if(vis[i]||a[le][i]<s) continue;//这个题做过,或者现在做i题难度没有s(前一题的分)高
vis[i]=1; //假设做i题
dfs(i,num+1,a[le][i]);
vis[i]=0; //取消假设
}
}
int main()
{
int i,j;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
memset(vis,0,sizeof(vis));
vis[0]=1; //题目说先做第0题
ans=0;
dfs(0,1,0);
printf("%d\n",ans);
}
return 0;
}
HDU 2614 Beat (dfs),布布扣,bubuko.com
标签:des style color os io for ar div
原文地址:http://blog.csdn.net/u014737310/article/details/38586953