70分求助
查看原帖
70分求助
1285722
zwz2010楼主2024/8/30 15:47
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N = 102;
int r,c,t;
int f[N][N],a[N][N],v[3][5] = {{0,0,0,0,0},{0,1,-1,0,0},{0,0,0,1,-1}};

int s(int x,int y){
	if(f[x][y] > 0) return f[x][y];
	f[x][y] = 1;
	for(int u=1;u<=4;u++){
		int nx = x+v[1][u];
		int ny = y+v[2][u];
		if(nx>=1&&nx<=c&&ny>=1&&nx<=r&&a[nx][ny]<a[x][y])  f[x][y] = max(f[x][y],s(nx,ny)+1);
	}
	return f[x][y];
}

int main(){
	scanf("%d%d",&r,&c);
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			scanf("%d",&a[i][j]);
		}
	}
	int ans = -0x3f3f3f3f;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			t = s(i,j);
			f[i][j] = t;
			ans = max(ans,t);
		}
	}
	printf("%d\n",ans);
	return 0;
}
2024/8/30 15:47
加载中...