题目描述

  这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在。但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助。
  山用一个三角形表示,从山顶依次向下有1段、2段、3段等山路,每一段用一个数字T(1< =T< =100)表示,代表晴天小猪在这一段山路上需要爬的时间,每一次它都可以朝左、右、左上、右上四个方向走(注意:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。
  晴天小猪从山的左下角出发,目的地为山顶,即隐者的小屋。

输入数据

  第一行有一个数 n (2≤n≤1000),n (2≤n≤1000), 表示山的高度。
  从第二行至第 n+1n+1 行,第 i+1i+1 行有 ii 个数,每个数表示晴天小猪在这一段山路上需要爬的时间。

输出数据

  一个数,即晴天小猪所需要的最短时间。

样例输入

5
1
2 3
4 5 6
10 1 7 8
1 1 4 5 6

样例输出

10

样例说明

在山的两侧的走法略有特殊,请自己模拟一下,开始我自己都弄错了……

解析:类似金字塔,但是,同一层内左右可以移动,第一段可以到达最后一段,即环形;上下层之间, 本层的第一段可以到达上一层的最后一段!!!

采取方式:先根据求解金字塔的方式求出dp[i][j],然后,在同一层里尝试左右走。因为是一个环形,所以采用走两遍的方式!!!(个人理解,是为了满足,任意段都有两种方式到达同层的另一段)

完整代码:

#include<iostream>
#include<cmath>
#define MAXN 1010
#define INF 2000000010
using namespace std;int road[MAXN][MAXN];
int dp[MAXN][MAXN];int main()
{int n;cin>>n;int i,j;for(i=1;i<=n;++i)for(j=1;j<=i;++j)cin>>road[i][j];dp[n][1]=road[n][1]; //起点 for(i=2;i<=n;++i)dp[n][i]=INF;for(i=2;i<=n;++i) //向右走 dp[n][i]=min(dp[n][i],dp[n][i-1]+road[n][i]);dp[n][n]=min(dp[n][n],dp[n][1]+road[n][n]); //最后一个点可以由第一个点直接达到(环形)for(i=n-1;i>=1;--i)//向左走 dp[n][i]=min(dp[n][i],dp[n][i+1]+road[n][i]);for(i=n-1;i>=1;--i) //从下往上走 {for(j=1;j<=i;++j)//金字塔dp[i][j]=min(dp[i+1][j],dp[i+1][j+1])+road[i][j];  dp[i][i]=min(dp[i][i],dp[i+1][1]+road[i][i]); //右端 顶点 可由下一层的左端顶点过来 dp[i][1]=min(dp[i][1],dp[i+1][i+1]+road[i][1]); //左端 顶点 由下一层的右端顶点过来 for(j=2;j<=i;++j)//向右走 dp[i][j]=min(dp[i][j],dp[i][j-1]+road[i][j]);dp[i][1]=min(dp[i][1],dp[i][i]+road[i][1]);for(j=i-1;j>=1;--j)//向左走 dp[i][j]=min(dp[i][j],dp[i][j+1]+road[i][j]);dp[i][i]=min(dp[i][i],dp[i][1]+road[i][i]);for(j=2;j<=i;++j)//向右走dp[i][j]=min(dp[i][j],dp[i][j-1]+road[i][j]);dp[i][1]=min(dp[i][1],dp[i][i]+road[i][1]);for(j=i-1;j>=1;--j)//向左走dp[i][j]=min(dp[i][j],dp[i][j+1]+road[i][j]);dp[i][i]=min(dp[i][i],dp[i][1]+road[i][i]);}cout<<dp[1][1])<<endl;
}

参考资料:https://blog.csdn.net/qq_35479641/article/details/52523761

晴天小猪历险记之Hill相关推荐

  1. vijosP1006 晴天小猪历险记之Hill

    vijosP1006 晴天小猪历险记之Hill 链接:https://vijos.org/p/1006 [思路] 图上DP. 这个题的递推顺序是关键.先从上一行得到最小值,然后从本行比较最小值,注意本 ...

  2. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

  3. 【vijos】1006 晴天小猪历险记之Hill(dijkstra)

    https://vijos.org/p/1006 连边后跑点权的最短路 注意连边的时候左端点可以连到下一行的右端点,右端点可以连到下一行的左端点 #include <cstdio> #in ...

  4. 18.03.06 vijos1006 晴天小猪历险记之Hill

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  5. P1006晴天小猪历险记之Hill

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  6. voj1006 晴天小猪历险记之Hill

    背景 Background   在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种 ...

  7. 回档|晴天小猪历险记之hill

    背景 Background 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物 ...

  8. Vijos 1006 晴天小猪历险记之Hill 单源单汇最短路

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  9. 晴天小猪历险记之Hill解题报告

    和数字三角形类似,但要更复杂一些. 一开始就仿照数字三角形写了方程:f[i][j]=min{f[i+1][j],f[i+1][j+1],f[i][j-1],f[i][j+1]},后来代码实现的时候发现 ...

最新文章

  1. 使用极光推送实现分组发送和服务端集成
  2. SQLServer制作一个包含三个表的视图
  3. iOS使用NSURLConnection发送同步和异步HTTP Request
  4. 一步步编写操作系统4 安装x86虚拟机 bochs
  5. 在页游中LUA的应用(1)
  6. CEF编译 执行gn args out\Release_GN_x86异常
  7. java 模块开发_java模块化开发
  8. 初学python100例-案例23 python输出菱形图案 青少年python编程 少儿编程案例讲解
  9. 有限元法基本思想和分类
  10. ha rose server安装 sql_Rose HA for SQL2008的安装之一
  11. 当你灵感枯竭的时候,如何深挖客户需求?采用曼陀罗思考法(5W1H模式),相信你会找到出路
  12. android webview 视频黑屏,【原创】webview加载flash视频黑屏的解决方法(一把鼻涕一把泪,所谓经验的重要性)...
  13. 2022-2028全球与中国智能家居产品市场现状及未来发展趋势
  14. Ubuntu垃圾箱目录及清空
  15. 计算机积木游戏,儿童智力开发游戏:四款适合幼儿的积木游戏
  16. Cython使用问题集合
  17. kryo java_使用Kryo序列化任意Java对象(获取IllegalAccessError)
  18. ngx之日志切割 、ngx信号
  19. ch01: 初识数据库
  20. 不同的靶材(Cu,Cr,Co,Mo,Fe靶)对XRD谱有什么影响

热门文章

  1. 商品销售统计系统java_IMS: 基于Java实现的InventoryManagementSystem进销存管理系统
  2. 文章来源于--英国《金融时报》中文网专栏作家丁学良 2008-09-19
  3. android rmvb格式下载,顶峰-Android手机视频转换器
  4. Linux磁盘分区以及多重引导简述
  5. EngineerCMS利用梦想CAD控件MXdraw进行图纸在线编辑,保存到服务器
  6. java 回车表示_关于JAVA中回车符的认识
  7. 油猴插件(隐藏知乎标题,屏蔽百度搜索广告)
  8. 多项式算法2:NTT(快速数论变换)
  9. 读后感:走钢索的人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十七)
  10. 视频教程-从理论到实战:在园区网中部属IPv6-网络技术