⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1088.cpp

📁 北大acm的部分题目答案。绝少水题。均是本人自行求解并通过。
💻 CPP
字号:
#include<iostream>
#include<iomanip>
using namespace std;
int r,l;
int search(int a[102][102],int c[102][102],bool v[102][102],int i,int j)
{
	if(i>r||j>l)return 0;
	int text,max;
	max=1;
	//从上,左,下,右
if(a[i-1][j]<a[i][j]&&!v[i-1][j])//上
{
	text=search(a,c,v,i-1,j);
    if(max<text+1)max=text+1;
}
else if(a[i-1][j]<a[i][j]&&v[i-1][j])
		if(c[i-1][j]+1>max)max=c[i-1][j]+1;

if(a[i][j-1]<a[i][j]&&!v[i][j-1])//左
{
	text=search(a,c,v,i,j-1);
    if(max<text+1)max=text+1;
}
else if(a[i][j-1]<a[i][j]&&v[i][j-1])
		if(c[i][j-1]+1>max)max=c[i][j-1]+1;
		

	if(a[i+1][j]<a[i][j]&&!v[i+1][j])//下
	{ 
		text=search(a,c,v,i+1,j);
		if(max<text+1)max=text+1;
	}
	else if(a[i+1][j]<a[i][j]&&v[i+1][j])
	{if(c[i+1][j]+1>max)max=c[i+1][j]+1;}


	if(a[i][j+1]<a[i][j]&&!v[i][j+1])//右
	{ 
		text=search(a,c,v,i,j+1);
		if(max<text+1)max=text+1;
	}
	else if(a[i][j+1]<a[i][j]&&v[i][j+1])
	{if(c[i][j+1]+1>max)max=c[i][j+1]+1;}
  
	v[i][j]=true;
    c[i][j]=max;
    return max;
}

int main()
{
	int a[102][102],c[102][102],i,j,text,max=0;
	bool v[102][102];
	for(i=0;i<102;i++)
		for(j=0;j<102;j++)
		{
			c[i][j]=1;
			v[i][j]=false;
			if(i==0||j==0||i==101||j==101){a[i][j]=100000;c[i][j]=-2;}
		}
	cin>>r>>l;
	for(i=1;i<=r;i++)
		for(j=1;j<=l;j++)
			cin>>a[i][j];
		
	for(i=1;i<=r;i++)
		for(j=1;j<=l;j++)
		{
			text=search(a,c,v,i,j);
			if(text>max)max=text;
		}
	cout<<max<<endl;
	return 0;
}

⌨️ 快捷键说明

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