若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

3143: 动态规划进阶题目之滑雪

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,512

题目描述

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

输入

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

输出

输出最长区域的长度。

样例输入

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

参考代码

#include<stdio.h>
typedef struct 
{
    int date;
    int longest;
}
mi;
mi a[1000][1000];
//迷宫 
int m,n;
//长和宽 
typedef struct 
{
    int x1[4];
    int y1[4];
}
wei;
wei fang;
int maxn;
int max(int x,int y) 
{
    return x>y?x:y;
}
int dp(int x,int y) 
{
    int x2,y2;
    a[x][y].longest=1;
    for (int i=0;i<4;i++) 
    {
        x2=x+fang.x1[i];
        y2=y+fang.y1[i];
        if(x2>=0&&x2<m&&y2>=0&&y2<n) 
        {
            if(a[x2][y2].date<a[x][y].date) 
            {
                if(a[x2][y2].longest==-1) 
                {
                    dp(x2,y2);
                    a[x][y].longest=max(a[x][y].longest,a[x2][y2].longest+1);
                } else 
                {
                    a[x][y].longest=max(a[x][y].longest,a[x2][y2].longest+1);
                }
            }
        }
    }
    if(maxn<a[x][y].longest)
        maxn=a[x][y].longest;
}
int main() 
{
    fang.x1[0]=0;
    fang.x1[1]=0;
    fang.x1[2]=1;
    fang.x1[3]=-1;
    fang.y1[0]=1;
    fang.y1[1]=-1;
    fang.y1[2]=0;
    fang.y1[3]=0;
    //四个方向 
    scanf("%d %d",&m,&n);
    for (int i=0;i<m;i++) 
    {
        for (int j=0;j<n;j++) 
        {
            scanf("%d",&a[i][j].date);
            a[i][j].longest=-1;
            //没访问
        }
    }
    for (int i=0;i<m;i++) 
    {
        for (int j=0;j<n;j++) 
        {
            if(a[i][j].longest==-1)//没有访问过 
            {
                dp(i,j);
                //搜索i,j
            }
        }
    }
    printf("%d",maxn);
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Dreams孤独患者 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist