1088.cpp

来自「非常好的C++学习源码,里面包括各种算法的实现,二叉的的前中后序遍历等」· C++ 代码 · 共 66 行

CPP
66 行
字号
#include<iostream>
#include<memory.h>
using namespace std;
int a[102][102],b[102][102];

int f(int x,int y)
{	
	int max=0;
	if (a[x][y+1]>a[x][y])
	{
		if (b[x][y+1]==-1)
			b[x][y+1]=f(x,y+1);
		if (max<b[x][y+1])
			max=b[x][y+1];
	}
	if (a[x][y-1]>a[x][y])
	{
		if (b[x][y-1]==-1)
			b[x][y-1]=f(x,y-1);
		if (max<b[x][y-1])
			max=b[x][y-1];
	}
	if (a[x+1][y]>a[x][y])
	{
		if (b[x+1][y]==-1)
			b[x+1][y]=f(x+1,y);
		if (max<b[x+1][y])
			max=b[x+1][y];
	}
	if (a[x-1][y]>a[x][y])
	{
		if (b[x-1][y]==-1)
			b[x-1][y]=f(x-1,y);
		if (max<b[x-1][y])
			max=b[x-1][y];
	}
	return 1+max;
}

int main()
{
	int r,c,i,j,p=0;
	memset(a,0,sizeof(a));
	cin>>r>>c;
	for (i=1;i<=r;i++)
		for (j=1;j<=c;j++)
			cin>>a[i][j];
	memset(b,-1,sizeof(b));
	for (i=1;i<=r;i++)
		for (j=1;j<=c;j++)
		{
			if (b[i][j]==-1)
				b[i][j]=f(i,j);
			else
				continue;
		}
	for (i=1;i<=r;i++)
		for (j=1;j<=c;j++)
			if (p<=b[i][j])
				p=b[i][j];
	cout<<p<<endl;
	return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?