在爆零的边缘反复横跳
查看原帖
在爆零的边缘反复横跳
495599
CSZD楼主2022/7/18 15:57
#include<iostream>
#include<cstdio>
using namespace std;
int r,c,i,j,flag;
int x,y;
int h[105][105];
int g[105][105];
bool b[105][105];
int bx[5]={0,1,-1,0,0};
int by[5]={0,0,0,1,-1};
int a(int ii,int jj) 
{
	if(b[ii][jj])return g[ii][jj];
	b[ii][jj]=1;
	for(int k=1;k<=4;k++)
	{
		x=ii+bx[k];y=jj+by[k];
		if(h[ii][jj]>h[x][y]&&x>0&&x<=r&&y>0&&y<=c)
		{
			a(x,y);
			g[ii][jj]=max(g[ii][jj],g[x][y]+1);
		}
	}
	return g[ii][jj];
}
int main() 
{
	cin>>r>>c;
	for(i=1; i<=r; i++) 
	{
		for(j=1; j<=c; j++) 
		{
			cin>>h[i][j];
		}
	}
	int m=0;
	for(i=1;i<=r;i++)
	{
		for(j=1;j<=c;j++)
		{
			m=max(m,a(i,j));
		}
	}
	cout<<m<<endl;
	return 0;
}
2022/7/18 15:57
加载中...