题目描述

一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。

他要从网格的左上角进,右下角出。

每穿越中间1个小方格,都要花费1个单位时间。

商人必须在(2N-1)个单位时间穿越出去。

而在经过中间的每个小方格时,都需要缴纳一定的费用。

这个商人期望在规定时间内用最少费用穿越出去。

请问至少需要多少费用?

注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。

输入格式

第一行是一个整数,表示正方形的宽度N。

后面N行,每行N个不大于100的整数,为网格上每个小方格的费用。

输出格式

输出一个整数,表示至少需要的费用。

数据范围
1≤N≤100

样例


输入样例:
5
1  4  6  8  10
2  5  7  15 17
6  8  9  18 20
10 11 12 19 21
20 23 25 29 33输出样例:109样例解释:
样例中,最小值为109=1+2+5+7+9+12+19+21+33。

思路

(动态规划) O(n2)O(n^2)O(n2)

由题可知,状态可以用二维数组来表示
然后必须在2N - 1个单位时间走出去,意味着只能往下或者往右走

状态:f[i][j]表示从位置(1,1)走到位置(i, j)的所有路线的费用,
属性:题意是最小费用,所以在集合中取费用最小的那条路线,故取最小值 min

状态计算:
由上面可知,只能往下或者往右走,那么走到位置(i, j)的费用f[i][j]可以由
位置(i, j)的上面(i-1,j)或者左面(i, j-1)的最小值,再加上当前位置(i,j)的
费用得出。
所以 f[i][j] = min(f[i-1][j] + w[i][j], f[i][j-1] + w[i]);

C++ 代码

#include<iostream>
#include<cstring>
using namespace std;const int N = 110;
int f[N][N];
int w[N][N];
int n;int main()
{//输入scanf("%d", &n);for(int i = 1; i <= n; i ++)for(int j = 1; j <= n; j++)scanf("%d", &w[i][j]);//因为要求最小值,先把所有的方格都初始化为一个特别大的数0x3f3f3f3fmemset(f, 0x3f, sizeof f);for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++){//因为从左上角(1,1)开始走,所以直接把费用w[1][1]赋值给f[1][1];if(i == 1 && j == 1)f[i][j] = w[i][j];else{//计算当前位置的最小费用f[i][j] = min(f[i][j], f[i - 1][j]+ w[i][j]) ;f[i][j] = min(f[i][j], f[i][j - 1]+ w[i][j]) ;}}printf("%d\n", f[n][n]);return 0;
}

Acwing1018. 最低通行费题解相关推荐

  1. AcWing1018.最低通行费

    题目描述 一个商人穿过一个 N×NN×NN×N 的正方形的网格,去参加一个非常重要的商务活动. 他要从网格的左上角进,右下角出. 每穿越中间 111 个小方格,都要花费 111 个单位时间. 商人必须 ...

  2. 信息学奥赛一本通 1287:最低通行费 | OpenJudge NOI 2.6 7614:最低通行费

    [题目链接] ybt 1287:最低通行费 OpenJudge NOI 2.6 7614:最低通行费 [题目考点] 1. 动态规划:坐标型动规 [解题思路] 解法1:坐标型动规 限定商人必须在2N-1 ...

  3. AcWing 1018. 最低通行费【动态规划】【线性DP】【数字三角形】

    AcWing 1018. 最低通行费 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 1018. 最低通行费 二.题目分析 (一)算 ...

  4. ybt1287 最低通行费

    ybt1287 最低通行费 时空限制    1000ms/64MB [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方 ...

  5. 一本通 1287:最低通行费 C++

    这题我们用递推(其实就是非常弱鸡的动态规划)做 上代码: //最低通行费 #include <iostream>using namespace std;const int N = 105; ...

  6. [AcWing] 1018. 最低通行费(C++实现)数字三角形模型

    [AcWing] 1018. 最低通行费(C++实现)数字三角形模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...

  7. 最低通行费(动态规划)题解

    描述 一个商人穿过一个 N*N 的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方格,都要花费1个单位时间.商人必须在(2N-1)个单位时间穿越出去.而在 ...

  8. 最低通行费(信息学奥赛一本通-T1287)

    [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方格,都要花费1个单位时间.商人必须在(2N-1)个单位时间穿越出去. ...

  9. 1287:最低通行费

    时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1 ...

最新文章

  1. R-CNN系列学习笔记
  2. vue中的组件导航守卫,个人理解
  3. 栈的动态顺序存储和实现(C语言)【栈】(7)
  4. Visual Studio Code设置断点时出现Unverified breakpoint该咋办
  5. 男性早孕-从软件与程序的区别说起
  6. ajax获取get请求,get请求
  7. 开始深入的学习javascript
  8. 使用commons-fileupload-1.2.1.jar等组件实现文件上传
  9. django学习----01HelloWorld
  10. mysql udf http,mysql下mysql-udf-http效率测试小记
  11. BZOJ_1626_[Usaco2007_Dec]_Building_Roads_修建道路_(Kruskal)
  12. hdu4504java
  13. Atom 扩展离线安装
  14. 数据库实验1---创建数据库和表
  15. HDU 1241 Oil Deposits(石油储藏)
  16. 聚焦化工安全:化工厂人员定位
  17. OCJP 考试题之八
  18. HTML+CSS聚光灯效果动画
  19. 【转】桌面背景文件夹-win7文件夹背景,文件夹背景
  20. wan端口未连接怎么弄_wan口未连接是什么意思?怎么解决

热门文章

  1. Photoshop详细解析120个技巧帮助设计加速
  2. 技术大咖云集,GIAC 2017全球互联网架构大会圆满落幕
  3. 快播科技正式破产,王欣:我放下过天地,却从未放下过你
  4. python执行excel公式 语法_10个方法:用Python执行SQL、Excel常见任务
  5. 香港公司注册详细介绍
  6. 餐饮软件打印队列之实现
  7. java 操作pdf_java操作PDF(PDFBOX和Itext框架)
  8. java 发送会议邮件模板_使用javamail发送会议邀请
  9. js数字和字符串转2进制、4进制、7进制、8进制、10进制、12进制、16进制
  10. 八个角最多可以把平面分成多少部分?_适合3——6岁孩子阅读的数学绘本,教师和家长都可以收藏(三)...