40分,六个点WA
查看原帖
40分,六个点WA
262942
Bonfire_Lit楼主2020/8/16 10:06
#include<cstdio>
#include<algorithm>
using namespace std;
int m[1002][1002],r,c,ans=1;
int cun[1002][1002];
bool gao(int x,int y) {
	return m[x-1][y]<m[x][y]&&m[x][y-1]<m[x][y]&&m[x+1][y]<m[x][y]&&m[x][y+1]<m[x][y];
}
int f(int x,int y) {
	if(cun[x][y])return cun[x][y];
	int sum=1;
	if(m[x-1][y]<m[x][y]) {
		if(cun[x-1][y])sum=max(cun[x-1][y]+1,sum);
		else sum=max(f(x-1,y)+1,sum);
	}
	if(m[x+1][y]<m[x][y]) {
		if(cun[x+1][y])sum=max(cun[x+1][y]+1,sum);
		else sum=max(f(x+1,y)+1,sum);
	}
	if(m[x][y-1]<m[x][y]) {
		if(cun[x][y-1])sum=max(cun[x][y-1]+1,sum);
		else sum=max(f(x,y-1)+1,sum);
	}
	if(m[x][y+1]<m[x][y]) {
		if(cun[x][y+1])sum=max(cun[x][y+1]+1,sum);
		else sum=max(f(x,y+1)+1,sum);
	}
	cun[x][y]=sum;
	return sum;
}
int main() {
	scanf("%d%d",&r,&c);
	for(int i=1; i<=r; i++) {
		for(int j=1; j<=c; j++) {
			scanf("%d",&m[i][j]);
		}
	}
	for(int i=1; i<=r; i++) {
		for(int j=1; j<=c; j++) {
			if(gao) {
				ans=max(ans,f(i,j));
			}
		}
	}
	printf("%d",ans);
}

请问我这个算法有什么问题吗?

2020/8/16 10:06
加载中...