文章

59

粉丝

0

获赞

331

访问

8.5k

头像
滑雪 题解:dfs
P1568
发布于2026年3月18日 14:33
阅读数 111

#include <bits/stdc++.h>
using namespace std;

int mpt[105][105];
int dp[105][105];
const int mov[4][2]={0,1,1,0,0,-1,-1,0};
int r,c;
int dfs(int x,int y)
{
	if(dp[x][y])return dp[x][y];
	int maxx=1;
	for(int i=0;i<4;i++)
	{
		int mx=x+mov[i][0];
		int my=y+mov[i][1];
		if(mx>0&&mx<=r&&my>0&&my<=c&&mpt[mx][my]>mpt[x][y])
			{
			maxx=max(maxx,dfs(mx,my)+1);  
			}
	}
	dp[x][y]=maxx;
	return maxx;
}
int main()
{
	while(cin>>r>>c)
	{
		memset(mpt,0,sizeof(mpt));
		int ans=0;
		for(int i=1;i<=r;i++)
			for(int j=1;j<=c;j++)
			{
				cin>>mpt[i][j];
			}
		memset(dp,0,sizeof(dp));
		for(int i=1;i<=r;i++)
			for(int j=1;j<=c;j++)
			{
				dp[i][j]=dfs(i,j);
				if(dp[i][j]>ans)
					ans=dp[i][j];
			}
		cout<<ans<<endl;
	}
	return 0;
}
		

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发