zoukankan      html  css  js  c++  java
  • P1434 滑雪

    题目描述

    Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:

    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

    一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可行的滑坡为24-17-16-1(从24开始,在1结束)。当然25-24-23―┅―3―2―1更长。事实上,这是最长的一条。

    输入输出格式

    输入格式:

    输入的第一行为表示区域的二维数组的行数R和列数C(1≤R,C≤100)。下面是R行,每行有C个数,代表高度(两个数字之间用1个空格间隔)。

    输出格式:

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

    输入输出样例

    输入样例#1:
    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
    
    输出样例#1:
    25
    #include<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<stack>
    using namespace std;
    int x,y;
    int a[105][105];
    int b[105][105];
    int ans;
    void dfs(int x1,int y1,int step)
    {
        if(x1<=0||x1>x||y1<=0||y1>y)return;
        if(b[x1][y1]>=step)return;
        ans=max(ans,step);
        b[x1][y1]=step;
        if(a[x1-1][y1]<a[x1][y1])dfs(x1-1,y1,step+1);//b[x1][y1]=max(b[x1][y1],b[x1-1][y1]-1);}
        if(a[x1+1][y1]<a[x1][y1])dfs(x1+1,y1,step+1);//b[x1][y1]=max(b[x1][y1],b[x1+1][y1]-1);}
        if(a[x1][y1-1]<a[x1][y1])dfs(x1,y1-1,step+1);//b[x1][y1]=max(b[x1][y1],b[x1][y1-1]-1);}
        if(a[x1][y1+1]<a[x1][y1])dfs(x1,y1+1,step+1);//b[x1][y1]=max(b[x1][y1],b[x1][y1+1]-1);}
    }
    int main()
    {
        scanf("%d%d",&x,&y);
        for(int i=1;i<=x;i++)
        for(int j=1;j<=y;j++)
            scanf("%d",&a[i][j]);
        for(int i=1;i<=x;i++)
        for(int j=1;j<=y;j++)
            dfs(i,j,1);//我尝试在这个地方加上判断(i,j)为附近最高点,但是会错,求告知;
        printf("%d",ans);
        return 0;
    }
    

      

      

  • 相关阅读:
    LeetCode 226. Invert Binary Tree
    LeetCode 221. Maximal Square
    LeetCode 217. Contains Duplicate
    LeetCode 206. Reverse Linked List
    LeetCode 213. House Robber II
    LeetCode 198. House Robber
    LeetCode 188. Best Time to Buy and Sell Stock IV (stock problem)
    LeetCode 171. Excel Sheet Column Number
    LeetCode 169. Majority Element
    运维工程师常见面试题
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7156859.html
Copyright © 2011-2022 走看看