NYOJ 10 skiing

제목 링크:http://acm.nyist.net/JudgeOnline/problem.php?pid=10
아니면 검색 문제 에 DP 라 는 생각 이 들 었 나 요? 책 에서 가 지 를 자 르 지 않 으 면 시간 이 초과 된다 고 했 는데 이 문 제 는.................................................줄 이지 않 아 도 넘 어 갈 수 있다. 데 이 터 를 테스트 하 는 문제.간단 한 검색 문제 에 속 합 니 다.
코드:
#include<stdio.h>
#include<string.h>
int a[101][101],visit[101][101];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int s,t,max,r,c;
int bfs(int x,int y)
{
	if(visit[x][y]>1)//**  ,      TLE ,       ,     TLE,            *//
	{
		return visit[x][y];//**         ,          ,       **//
	}
	for(int k=0;k<4;k++)
	{
		s=x+dx[k];
		t=y+dy[k];
		if(s>=0 && s<r && t>=0 && t<c && a[x][y]<a[s][t])//**     。DP        **//
		{
			max=bfs(s,t);//**    **//
			if(visit[x][y]<max+1)
			{
				visit[x][y]=max+1;
			}
		}
	}
	return visit[x][y];//**           **//
}
int main()
{
	int ncases,i,j,ans;
	scanf("%d",&ncases);
	while(ncases--)
	{
		ans=-1;
		scanf("%d %d",&r,&c);
		for(i=0;i<=r-1;i++)
		{
			for(j=0;j<=c-1;j++)
			{
				scanf("%d",&a[i][j]);
				visit[i][j]=1;
			}
		}
		for(i=0;i<=r-1;i++)
		{
			for(j=0;j<=c-1;j++)
			{
				bfs(i,j);
				if(visit[i][j]>ans)
				{
					ans=visit[i][j];
				}
			}
		}
		printf("%d
",ans); } return 0; }

좋은 웹페이지 즐겨찾기