Acwing1018. 最低通行费题解
题目描述
一个商人穿过一个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. 最低通行费题解相关推荐
- AcWing1018.最低通行费
题目描述 一个商人穿过一个 N×NN×NN×N 的正方形的网格,去参加一个非常重要的商务活动. 他要从网格的左上角进,右下角出. 每穿越中间 111 个小方格,都要花费 111 个单位时间. 商人必须 ...
- 信息学奥赛一本通 1287:最低通行费 | OpenJudge NOI 2.6 7614:最低通行费
[题目链接] ybt 1287:最低通行费 OpenJudge NOI 2.6 7614:最低通行费 [题目考点] 1. 动态规划:坐标型动规 [解题思路] 解法1:坐标型动规 限定商人必须在2N-1 ...
- AcWing 1018. 最低通行费【动态规划】【线性DP】【数字三角形】
AcWing 1018. 最低通行费 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 1018. 最低通行费 二.题目分析 (一)算 ...
- ybt1287 最低通行费
ybt1287 最低通行费 时空限制 1000ms/64MB [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方 ...
- 一本通 1287:最低通行费 C++
这题我们用递推(其实就是非常弱鸡的动态规划)做 上代码: //最低通行费 #include <iostream>using namespace std;const int N = 105; ...
- [AcWing] 1018. 最低通行费(C++实现)数字三角形模型
[AcWing] 1018. 最低通行费(C++实现)数字三角形模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...
- 最低通行费(动态规划)题解
描述 一个商人穿过一个 N*N 的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方格,都要花费1个单位时间.商人必须在(2N-1)个单位时间穿越出去.而在 ...
- 最低通行费(信息学奥赛一本通-T1287)
[题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方格,都要花费1个单位时间.商人必须在(2N-1)个单位时间穿越出去. ...
- 1287:最低通行费
时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1 ...
最新文章
- R-CNN系列学习笔记
- vue中的组件导航守卫,个人理解
- 栈的动态顺序存储和实现(C语言)【栈】(7)
- Visual Studio Code设置断点时出现Unverified breakpoint该咋办
- 男性早孕-从软件与程序的区别说起
- ajax获取get请求,get请求
- 开始深入的学习javascript
- 使用commons-fileupload-1.2.1.jar等组件实现文件上传
- django学习----01HelloWorld
- mysql udf http,mysql下mysql-udf-http效率测试小记
- BZOJ_1626_[Usaco2007_Dec]_Building_Roads_修建道路_(Kruskal)
- hdu4504java
- Atom 扩展离线安装
- 数据库实验1---创建数据库和表
- HDU 1241 Oil Deposits(石油储藏)
- 聚焦化工安全:化工厂人员定位
- OCJP 考试题之八
- HTML+CSS聚光灯效果动画
- 【转】桌面背景文件夹-win7文件夹背景,文件夹背景
- wan端口未连接怎么弄_wan口未连接是什么意思?怎么解决
热门文章
- Photoshop详细解析120个技巧帮助设计加速
- 技术大咖云集,GIAC 2017全球互联网架构大会圆满落幕
- 快播科技正式破产,王欣:我放下过天地,却从未放下过你
- python执行excel公式 语法_10个方法:用Python执行SQL、Excel常见任务
- 香港公司注册详细介绍
- 餐饮软件打印队列之实现
- java 操作pdf_java操作PDF(PDFBOX和Itext框架)
- java 发送会议邮件模板_使用javamail发送会议邀请
- js数字和字符串转2进制、4进制、7进制、8进制、10进制、12进制、16进制
- 八个角最多可以把平面分成多少部分?_适合3——6岁孩子阅读的数学绘本,教师和家长都可以收藏(三)...