P1434 [SHOI2002] 滑雪 求助dalao
  • 板块题目总版
  • 楼主ice_fish01
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/2/1 09:53
  • 上次更新2023/10/24 02:16:41
查看原帖
P1434 [SHOI2002] 滑雪 求助dalao
770910
ice_fish01楼主2023/2/1 09:53

Link

蒟蒻の我的代码(#1,#2,#6 WA):

#include <bits/stdc++.h>
using namespace std;
int r,c,a[110][110],ans,mem[110][110],tmp,dx[]={0,1,0,-1,0},dy[]={0,0,-1,0,1};
int dfs(int x,int y)
{
	if(mem[x][y])
		return mem[x][y];
	mem[x][y] = 1;
	bool ok = false;
	int maxi = -1;
	for(int i = 1;i <= 4;i++)
	{
		int yx = x + dx[i],yy = y + dy[i];
		if(1 <= yx && yx <= c && 1 <= yy && yy <= r && a[yx][yy] < a[x][y])
		{
			ok = true;
			maxi = max(1 + dfs(yx,yy),maxi);
		}
		else
			continue;
	}
	return (ok) ? mem[x][y] = maxi : mem[x][y] = 1;
}
signed main()
{
	cin >> r >> c;
	for(int i = 1;i <= r;i++)
	{
		for(int j = 1;j <= c;j++)
			cin >> a[i][j];
	}
	for(int i = 1;i <= r;i++)
	{
		for(int j = 1;j <= c;j++)
		{
			ans = max(dfs(i,j),ans);
//			printf("i=%d,j=%d,a(i,j)=%d,dfs(i,j)=%d,ans=%d\n",i,j,a[i][j],dfs(i,j),ans);
		}
	}
	cout << ans;
    return 0;
}
2023/2/1 09:53
加载中...