算法提高 最长滑雪道

会有一股神秘感。 提交于 2020-03-02 13:13:27
#include<iostream>
using namespace std;
struct point
{
	int x;
	int y;
};
int n,m;
int max1=0;
int graph[10][10];
int mark[10][10]={0};
void  getlen(int x,int y,int len)
{
	int flag=0;
	if(x-1>=0 && mark[x-1][y]!=1)
	{
		if(graph[x-1][y] < graph[x][y])
		{
			mark[x-1][y]=1;
			getlen(x-1,y,len+1);
			mark[x-1][y]=0;
			flag=1;
		}
	}
	if(x+1<n && mark[x+1][y]!=1)
	{
		if(graph[x+1][y] < graph[x][y])
		{
			mark[x+1][y]=1;
			getlen(x+1,y,len+1);
			mark[x+1][y]=0;
			flag=1;
		}
	}
	if(y-1>=0 && mark[x][y-1]!=1)
	{
		if(graph[x][y-1] < graph[x][y])
		{
			mark[x][y-1]=1;
			getlen(x,y-1,len+1);
			mark[x][y-1]=0;
			flag=1;
		}
	}
	if(y+1<m && mark[x][y+1]!=1)
	{
		if(graph[x][y+1] < graph[x][y])
		{
			mark[x][y+1]=1;
			getlen(x,y+1,len+1);
			mark[x][y+1]=0;
			flag=1;
		}
	}
	if(!flag)
	{
		if(len > max1)
			max1 = len;
		return ;
	}
}
int main()
{
	int i,j;
	cin>>n>>m;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			cin>>graph[i][j];
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			getlen(i,j,1);
	}
	cout<<max1<<endl;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!