求助!
查看原帖
求助!
535996
Blanc_min楼主2022/7/13 20:20
#include<bits/stdc++.h>
using namespace std;
int a[101][101],n,f[101][101],ans=INT_MIN,m,fx[11]={0,1,0,-1,0},fy[11]={0,0,1,0,-1};
int check(int x,int y) {
	if(x>0&&y>0&&x<=n&&y<=m) return 1;
	return 0;
}
int dfs(int x,int y) {
	if(f[x][y]!=1) return f[x][y];
	for(int i=1;i<=4;i++) {
		int xx=x+fx[i],yy=y+fy[i];
		if(check(xx,yy)&&a[x][y]>a[xx][yy]) {
			f[x][y]=max(f[x][y],dfs(xx,yy)+1);
		}
	}
	return f[x][y];
}
int main() {
	cin>>n>>m;
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			cin>>a[i][j];
			f[i][j]=1;
		}
	}
	dfs(1,1);
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			ans=max(ans,f[i][j]);
		}
	}
	cout<<ans;
	return 0;
}
2022/7/13 20:20
加载中...