最低通行费——动态规划
一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。
这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?
注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。
输入格式:
第一行是一个整数,表示正方形的宽度N (1≤N<100);
后面N行,每行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。
(0,0) | (0,1) | (0,2) | (0,3) | (0,4) |
(1,0) | (1,1)> | (1,2)> | (1,3)> | (1,4) |
(2,0) | (2,1) | (2,2) | (2,3) | (2,4) |
(3,0) | (3,1) | (3,2) | (3,3) | (3,4) |
(4,0) | (4,1) | (4,2) | (4,3) | (4,4) |
先填红色部分的:即(0,x)和(x,0);
再从(1,1)向(1,2)填,填完一行再填下一行
自己写的:
#include <bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int pay[n+1][n+1];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>pay[i][j];}for(int i=2;i<=n;i++){pay[1][i]+=pay[1][i-1];pay[i][1]+=pay[i-1][1];}for(int i=2;i<=n;i++){for(int j=2;j<=n;j++){pay[i][j]+=min(pay[i][j-1],pay[i-1][j]);}}cout<<pay[n][n];return 0;
}
程序答案
#include <iostream>
using namespace std;
/*设map[i][j]代表方格[i,j]的费用,
cost[i][j]代表从方格[i,j]出发到达终点的费用,则
cost[i][j] = map[i][j] + max {cost[i+1][j], cost[i][j+1] } */ const int MAX = 110;
int map[MAX][MAX] = {0};
int cost[MAX][MAX] = {0};
int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> map[i][j];}} cost[n][n] = map[n][n];//初始化第n行的最少费用for (int i = n-1; i >= 1; i--) cost[n][i] = map[n][i] + cost[n][i+1];//初始化第n列的最少费用 for (int i = n-1; i >= 1; i--) cost[i][n] = map[i][n] + cost[i+1][n];//从下向上,从右向左填表 for (int i = n-1; i >= 1; i--) {for (int j = n-1; j >= 1; j--) {if (cost[i+1][j] < cost[i][j+1])cost[i][j] = map[i][j] + cost[i+1][j];elsecost[i][j] = map[i][j] + cost[i][j+1];}}cout << cost[1][1] << endl;return 0;
}
最低通行费——动态规划相关推荐
- AcWing 1018. 最低通行费【动态规划】【线性DP】【数字三角形】
AcWing 1018. 最低通行费 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 1018. 最低通行费 二.题目分析 (一)算 ...
- 一本通 1287:最低通行费 C++
这题我们用递推(其实就是非常弱鸡的动态规划)做 上代码: //最低通行费 #include <iostream>using namespace std;const int N = 105; ...
- 信息学奥赛一本通 1287:最低通行费 | OpenJudge NOI 2.6 7614:最低通行费
[题目链接] ybt 1287:最低通行费 OpenJudge NOI 2.6 7614:最低通行费 [题目考点] 1. 动态规划:坐标型动规 [解题思路] 解法1:坐标型动规 限定商人必须在2N-1 ...
- [AcWing] 1018. 最低通行费(C++实现)数字三角形模型
[AcWing] 1018. 最低通行费(C++实现)数字三角形模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 ...
- ybt1287 最低通行费
ybt1287 最低通行费 时空限制 1000ms/64MB [题目描述] 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方 ...
- 最低通行费(动态规划)题解
描述 一个商人穿过一个 N*N 的正方形的网格,去参加一个非常重要的商务活动.他要从网格的左上角进,右下角出.每穿越中间1个小方格,都要花费1个单位时间.商人必须在(2N-1)个单位时间穿越出去.而在 ...
- [Leedcode][JAVA][第983题][最低票价][动态规划]
[问题描述][第983题][最低票价][中等] 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出.每一项是一个从 1 到 ...
- Acwing1018. 最低通行费题解
题目描述 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动. 他要从网格的左上角进,右下角出. 每穿越中间1个小方格,都要花费1个单位时间. 商人必须在(2N-1)个单位时间穿越出去 ...
- 1018. 最低通行费(线性DP)
蓝桥杯国赛指南,详情见专栏 文章目录 Question Ideas Code Question 一个商人穿过一个 N×N 的正方形的网格,去参加一个非常重要的商务活动. 他要从网格的左上角进,右下角出 ...
最新文章
- 光测力学-栅线投影/面结构光技术
- 简书上的大牛总结的 ServerSocket Accept() 的确是阻塞方法 与猜想一致 一些理解 转载如下
- 智源大会参会指南:4天 100+场顶尖报告,硬核高密度,如何才能不留遗憾?
- JavaScript深入之执行上下文栈
- 纲:散户炒股存两大弱势 我自己不炒也不建议小散炒
- 二叉树题目---3 另一个树的子树 AND 二叉树最大深度
- 当开源奔向物流,阿里云 PolarDB-X 数据库与韵达携手的背后
- 批量建模:一元线性回归
- 颜色基础知识——CIE 1931色度坐标
- 计算机科学期刊重复率要求,计算机科学与应用期刊
- vue 动态设置浏览器标题
- linux发送短信的脚本,shell监控系统资源并通过短信报警的脚本
- python——自动化报告word(1)
- ChatGPT插件与简要介绍(已收集70个)了解添加插件后的chatgpt能做什么
- python中的方法是什么_Python方法
- Storm专题一、Storm DRPC 分布式计算
- GoLang之iface 和 eface 的区别是什么?
- Python第八课(函数1)
- linux lp0设备,P1108打印机插入Linux设备USB口后自动reset
- 什么是监控系统云台?