70分 超时+WA求助(c++14(GCC))
查看原帖
70分 超时+WA求助(c++14(GCC))
677589
hanzuorui楼主2022/7/19 10:29

各位dalao 995

(这道题不能保存输入输出,吐槽)

上代码:

#include <stdio.h>
int w[105][105],cnt,max;
bool flag[105][105];
int R,C;
bool check(int o,int p,int q,int r)
{
	if(flag[q][r]==1||q<1||r<1||q>R||r>C||w[o][p]<=w[q][r])
	{
		return 0;
	}
	return 1;
}
void dfs(int m,int n)
{
	if(check(m,n,m,n+1)==1)
	{
		flag[m][n+1]=1;
		cnt++;
		if(cnt>max)
		{
			max=cnt;
		}
		dfs(m,n+1);
		flag[m][n+1]=0;
		cnt--;
	}
	if(check(m,n,m+1,n)==1)
	{
		flag[m+1][n]=1;
		cnt++;
		if(cnt>max)
		{
			max=cnt;
		}
		dfs(m+1,n);
		flag[m+1][n]=0;
		cnt--;
	}
	if(check(m,n,m,n-1)==1)
	{
		flag[m][n-1]=1;
		cnt++;
		if(cnt>max)
		{
			max=cnt;
		}
		dfs(m,n-1);
		flag[m][n-1]=0;
		cnt--;
	}
	if(check(m,n,m-1,n)==1)
	{
		flag[m-1][n]=1;
		cnt++;
		if(cnt>max)
		{
			max=cnt;
		}
		dfs(m-1,n);
		flag[m-1][n]=0;
		cnt--;
	}
}
int main()
{
	scanf("%d%d",&R,&C);
	for(int i=1;i<=R;i++)
	{
		for(int j=1;j<=C;j++)
		{
			scanf("%d",&w[i][j]);
		}
	}
	for(int i=1;i<=R;i++)
	{
		for(int j=1;j<=C;j++)
		{
			for(int k=1;k<=R;k++)
			{
				for(int l=1;l<=C;l++)
				{
					flag[k][l]=0;
				}
			}
			cnt=1;
			flag[i][j]=1;
			dfs(i,j);
		}
	}
	printf("%d",max);
	return 0;
}

本人太菜,请dalao直接修改调试

谢谢谢谢谢谢谢谢谢谢~~~~~~~~~~~~~~~~~~~~~~

2022/7/19 10:29
加载中...