• C++ 滑雪


    试题描述:

    LYH喜欢滑雪,因为滑雪的确很刺激,可是为了获得速度,滑的区域必须向下倾斜,当LYH滑到坡底,不得不再次走上坡或等着直升机来载他,LYH想知道在一个区域中最长的滑坡。滑坡的长度由滑过点的个数来计算,区域由一个二维数组给出,数组的每个数字代表点的高度。下面是一个例子:
    1      2     3     4     5
    16    17    18    19    6
    15    24    25    20    7
    14    23    22    21    8
    13    12    11    10    9
    一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小,在上面的例子中,一条可行的滑坡为25-24-17-16-1(从25开始到1结束),当然25-24……2…1更长,事实上这是最长的一条。

    输入:

    输入的第一行为表示区域的二维数组的行数R和列数C(1≤R、C≤100)下面是R行,每行有C个数代表高度。

    输出:

    输出区域中最长的滑坡长度。

    输入示例:

    5 5
    1 2 3 4 5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9

    输出示例:

    25

    运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int dx[5]={0,-1,0,1,0},
        dy[5]={0,0,1,0,-1};
    long r,c,i,j,p,t,ans;
    long m[101][101],f[101][101];
    int search(int,int);
    int main()
    {
    	cin>>r>>c;
    	ans=0;
    	for(i=1;i<=r;i++)
    	  for(j=1;j<=c;j++)
    	    cin>>m[i][j];
       for(i=1;i<=r;i++)
         for(j=1;j<=c;j++)
         {
         	t=search(i,j);
         	f[i][j]=t;
         	if(t>ans)ans=t;
    	 }
      cout<<ans;
    } 
    int search(int x,int y)
    {
    	int i,t,tmp,nx,ny;
    	if(f[x][y]>0)
    	{
    		return(f[x][y]);
    	}
    	t=1;
    	for(i=1;i<=4;i++)
    	  {
    	  	nx=x+dx[i];
    	  	ny=y+dy[i];
    	  	if((nx>=1)&&(nx<=r)&&(ny>=1)&&(ny<=c)&&(m[x][y]<m[nx][ny]))
    	  	  {
    	  	  	tmp=search(nx,ny)+1;
    	  	  	if(tmp>t)t=tmp;
    	      }
    	  }
    	  f[x][y]=t;
    	  return(t);
    }

    一道搜索的试题。(递归也可以放在上面)

    首先要注意的是,定义一个二维数组。

    然后输入,用嵌套循环。

    然后,进行dfs(代码中的search),

    定义dx和dy,用于计算分别向上下左右四个方向。

    但是我们只需要进行一次,所以就要判断一次

    if(f[x][y]>0)
    	{
    		return(f[x][y]);
    	}
    随后我们就要继续进行dfs了,并在dfs的过程中判断最大值。
  • 相关阅读:
    shape与reshape
    opencv4.5.0 +contrib编译流程
    人脸定位(haar特征)
    最近邻分类法
    人脸识别概述
    跟踪视频中的物体
    估算稠密光流
    resize函数
    swap函数
    hibernate的session执行增删改查方法的执行步骤
  • 原文地址:https://www.cnblogs.com/FXY-180/p/9511459.html
Copyright © 2020-2023  润新知