zoukankan      html  css  js  c++  java
  • 滑雪 记忆化搜索简单模型

    滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。给出一个由二维数组表示的滑雪区域,数组的数字代表各点的高度。请你找出这个区域中最长的滑坡。

    下面是一个例子:

    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。当然,25-24-23-...-3-2-1更长。事实上,这是最长的一条滑坡。

    【输入文件】

    输入文件ski.in的第一行为两个数R, C,表示滑雪区域的行数和列数(1≤R,C≤100)。下面是R行,每行有C个整数,表示高度H(0≤H≤10000)。

    【输出文件】

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 int m,n;
     6 int map[1000][1000];
     7 int book[1000][1000];
     8 int nextx[4]={1,-1,0,0};
     9 int nexty[4]={0,0,1,-1};
    10 int ans=-1;
    11 void ins(){
    12     scanf("%d%d",&n,&m);
    13     for(int i=1;i<=n;i++){
    14         for(int j=1;j<=m;j++){
    15             scanf("%d",&map[i][j]);
    16         }
    17     }
    18 }
    19 int dfs(int x,int y){
    20     if(book[x][y]!=0){
    21         return book[x][y];
    22     }
    23     for(int i=0;i<=3;i++){
    24         int tx=x+nextx[i];
    25         int ty=y+nexty[i];
    26         if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&map[x][y]>map[tx][ty]){
    27             book[x][y]=max(book[x][y],dfs(tx,ty)+1);
    28         }
    29     }
    30     return book[x][y];
    31 }
    32 int main(){
    33     freopen("ski.in","r",stdin);
    34     freopen("ski.out","w",stdout);
    35     ins();
    36     for(int i=1;i<=n;i++){
    37         for(int j=1;j<=m;j++){
    38             ans=max(ans,dfs(i,j)+1);
    39         }
    40     }
    41     cout<<ans;
    42 }

    输出文件ski.out包括一行,只包含一个整数,表示滑雪区域中最长滑坡的长度。

    【样例输入】

    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

  • 相关阅读:
    解决:Cuda安装后找不到安装文件目录
    学习论文:Eyeriss v1
    AOD-NET除雾算法
    学习论文AOD-Net:All-in-One Dehazing Network
    学习ResNeXt
    CentOS-7.6-ARM 离线安装部署FastDFS
    CentOS ARM离线安装部署Mysql5.6.44
    NFS+SnapShot快照式备份迁移ES索引过程
    《无限可能:快速唤醒你的学习脑》
    Oracle用sqlplus无法登陆?
  • 原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/8488159.html
Copyright © 2011-2022 走看看