90分,第二个点TLE了
查看原帖
90分,第二个点TLE了
137723
pencil楼主2021/8/4 09:22
#include<bits/stdc++.h>
using namespace std;
int a[110][110],dx[5]= {0,0,0,1,-1},dy[5]= {0,-1,1,0,0},n,m;
bool f[110][110];
int s(int at,int b,int h,int p) {
	if(at>n||b>m||f[at][b]||at<1||b<1)
		return 0;	
		int ff=0;
	if(a[at][b]<h||p)
		ff++;
	else
		return 0;
		int i,big=-1,a1,b1;
	f[at][b]=1;
	for(i=1; i<=4; i++) {
		a1=at+dx[i];
		b1=b+dy[i];
//		f[a1][b1]=1;
		big=max(big,s(a1,b1,a[at][b],0));
//		f[a1][b1]=0;
	}
	f[at][b]=0;
	return big+ff;
}
int main() {
	int i,js,i2,maxx=-1,j;
	cin>>n>>m;
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++) {
			cin>>a[i][j];
		}
	}
	for(i=1; i<=n; i++) {
		for(j=1; j<=m; j++) {
			//	f[i][j]=1;
			maxx=max(maxx,s(i,j,a[i][j],1));
			//	f[i][j]=0;
		}
	} 
	cout<<maxx;
	return 0;
}
2021/8/4 09:22
加载中...