Beat

/*  題目意思太模糊,其實是個超級水題,做的沒什麼意思,不過把以前的那種寫代碼的習慣稍微改了下  */

思路:只要求出做出最多的題就是解,每次都從第一個題開始做,做下一個題的時間一定要大於等於上一個題的時間。(肯定存在一個最大的情況)

#include < iostream >
#include < cstdio   >
#define      N     30
using namespace  std;
int n,res;
int a[N][N],v[N];
int Max(int x,int y) {return x>y?x:y;}
void dfs(int k,int temp,int s)
{
	if(s>=n || res==n )
	{
		res=n;
		return;
	}
	res=Max(res,s);
	for(int i=1;i<=n;i++)
	{
		if(!v[i] && a[k][i]>=temp)
		{
			v[i]=1;
			dfs(i,a[k][i],s+1);
			v[i]=0;
		}
	}
}
int main ()
{
	//freopen("t.txt","r",stdin);
	int i,j;
	while(scanf("%d",&n)!=EOF)
	{
		res=-1*0x3f3f3f3f;
		for(i=1 ; i<=n ; i++)
			for(j=1 ; j<=n ; j++)
				scanf("%d",&a[i][j]);
		memset(v,0,sizeof(v));
		v[1]=1;
		dfs(1,0,1);
		printf("%d\n",res);
	}
	return 0;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章