交通网最短路径长 dp c++
//
// Created by Arc on 2020/4/26.
// /*
* 城市交通线路,单向通行,道路之间可能有不通,每条连同的路之间都有相应的费用
* 求从起点到终点的最小费用
*
* 需要一个a[n][n]数组存放每条路的费用,不连同就为0(给不连同加一个特判吧)
* f[n]表示点i到终点的最小费用,初始值都设为1000000(求最小费用,那你肯定要找个最大值啊)
* c[i]存放的是它的下一个的下标(画重点,这种方法真的很常见)
*/ #include <bits/stdc++.h>
using namespace std;
int main(){
long long f[],c[],a[][];//底下所有的下标都是从1开始的!!!!attention please!
int n;//总数
cin>>n;
memset(a,, sizeof(a));
memset(c,,sizeof(c));
for (int i = ; i <= n; ++i) {//下标是从1开始的所以是<=n
for (int j = ; j <= n; ++j) {
cin >> a[i][j]; }
}
for (int k = ; k < n; ++k) {
f[k]=; } //这里是算法的主体:逆推
f[n]=;
/*
* 写的时候是从n-1开始的,然后挨个往后比较
*(某dl说有点像冒泡排序bubblesort,好像确实有点哈哈哈哈)
* 就比如 1 2 3 4 5 就是从4开始往后跟5比
* 然后3开始跟4,5比
* 这里我把3称为固定点,4和5就是跳跃点(方便说明起见,完全杜撰的!)
*/
for (int i = n-; i >= ; i--) {//写的时候是从n-1开始的,然后挨个往后比较
for (int j = i+; j <= n; ++j) {//<=n
/*解释一下底下这行:
* a[i][j]>0 就是刚刚说的那个特判嘛,判断有没有相连
* f[j]!=1000000 f[j]是正在比较的那一个跳跃点,它要是为1000000那说明它根本不能到终点啊
* f[i]>a[i][j]+f[j] 一开始肯定成立,因为f[i]初始为1000000,到后来的时候,如果它大,那就是要改了呗
* f[i]=a[i][j]+f[j]; 更该成比较小的值
* c[i]=j;把这个位置记录下来
*
* 所以要赋值,需要满足的条件有:
* 1. i,j两点可以通
* 2. j能连接终点
* 3. 固定点的f比原来那个要小
*/
if((a[i][j]>) && (f[j]!=) && (f[i]>a[i][j]+f[j]) ){
f[i]=a[i][j]+f[j];
c[i]=j;
} // if(i==1 && j==n){
// cout<<"minlong="<<f[1]<<endl;//max
//} } }
//输出
cout<<"minlong="<<f[]<<endl;//max
int x=;
while(x!=){//注意这个条件,x为0的时候就不需要输出了
cout<<x<<" ";
x = c[x]; } return ; }
给一点点样例
Print in:
10
0 0 Print out:
minlong=19
1 3 5 8 10
说一下小白在这个代码中的一点点有点尴尬的错误:括号匹配问题.有时换编译器(编辑器)换多了就容易混:它有没有自动补全来着??中括号还好,大括号就会出现一堆bug,因为中括号小括号它自动补全了以后再往上码它也只是跳过它,但是大括号...码一个是一个!
最后一句:我原来这么长时间没有写题解了哈哈哈哈,抓住四月的小尾巴干起来!
交通网最短路径长 dp c++的更多相关文章
- hdu1428 记忆化搜索(BFS预处理最短路径和+DP+DFS)
题意:有一块 n * n 大小的方形区域,要从左上角 (1,1)走到右下角(n,n),每个格子都有通过所需的时间,并且每次所走的下一格到终点的最短时间必须比当前格子走到重点的最短时间短,问一共有多少种 ...
- POJ 3311---Hie with the Pie(状压DP)
题目链接 Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as ...
- dp培训完结(8.9)
概率与期望dp 期望: 为什么下面的式子成立? 若x可以取1,2,3,则x+c可以取1+c,2+c,3+c..........x*c可以取1*c,2*c,3*c why? 举个例子(E(x+y)=E( ...
- hdu1171(DP求两份物品的价值相差最小)
题目信息: 给出一些物品的价值和个数.分成两份,是这两份的价值相差最小(DP方法) http://acm.hdu.edu.cn/showproblem.php? pid=1171 AC代码: /** ...
- scauoj 18025 小明的密码 数位DP
18025 小明的密码 时间限制:4000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description 小明的密码由N(1<=N& ...
- bzoj1597[Usaco2008 Mar]土地购买 斜率优化dp
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5524 Solved: 2074[Submit] ...
- TZOJ 1937 Hie with the Pie(floyd+状压dp)
描述 The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfo ...
- 求最短路径的三种算法: Ford, Dijkstra和Floyd
Bellman-Ford算法 Bellman-Ford是一种容易理解的单源最短路径算法, Bellman-Ford算法需要两个数组进行辅助: dis[i]: 存储顶点i到源点已知最短路径 path[i ...
- 2800 送外卖[状态压缩dp]
2800 送外卖 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 有一个送外卖的,他手上有n份订单,他 ...
随机推荐
- JQuery UI - draggable参数中文详细说明
概述 在任何DOM元素启用拖动功能.通过单击鼠标并拖动对象在窗口内的任何地方移动. 官方示例地址:http://jqueryui.com/demos/draggable/ 所有的事件回调函数都有两个参 ...
- Centos7-Docker1.12开启守护进程(远程调用)
本文讲述了Docker1.12.6在Linux下开启守护进程(远程调用),理论上来说其他版本也是一样的改法,博主参考很多都是巨坑,综合自己实战分享给大家,如有错误请留言; - 修改配置 1.修改 do ...
- 使用TransferLearning实现环视图像的角点检测——Tensorflow+MobileNetv2_SSD
环境说明 依赖环境安装eIQ官方指南: name: eiq_auto channels: - conda-forge - defaults dependencies: - numpy=1.18.1=p ...
- HTML的<Object>标签怎么用?
<object>标签是一个HTML标签,用于在网页中显示音频,视频,图像,PDF和Flash等多媒体:它通常用于嵌入由浏览器插件处理的Flash页面元素,如Flash和Java项目.它还可 ...
- html/css解决inline-block内联元素间隙的多种方法总汇
序 display有几种属性:inline是内联对象,比如<a/> . <span/>标签等,可以“堆在一起”显示,宽高由内容决定,不能设置:block是块对象,比如<d ...
- UVA1464 Traffic Real Time Query System
传送门:https://www.luogu.com.cn/problem/UVA1464 看到这道题,求必经的点数,还是无向图.那么妥妥的圆方树.圆方树上的任意两圆点间的路径必定是圆点方点相交错的,对 ...
- mac篇---使用iTerm2快捷连接SSH
大家都知道使用iTerm2连接shh 使用命令 ssh -p22 root@129.10.10.1,然后输入密码即可. 但是每次都输入还是比较麻烦的.iTerm2为我们提供了快捷的方式.三步即可完成此 ...
- 图形处理:给 Canvas 文本填充线性渐变
作者:凹凸曼 - Barrior 在 Canvas 中对文本填充水平或垂直的线性渐变可以轻易实现,而带角度的渐变就复杂很多:就好像下面这样,假设文本矩形宽为 W, 高为 H, 左上角坐标为 X, Y. ...
- python三器一闭
前言:python三器一闭i 包含 迭代器.生成器.装饰器,闭包 迭代器 概念:迭代器是一种可以记录可迭代对象遍历的位置,迭代器从第一个元素开始访问,直到访问所有元素访问结束,迭代器只会往前,不会后退 ...
- WPF 设置帧率
开始仔细学习WPF了 说是动画不流畅,可以通过设置帧率解决,查了很多,都说设置Timeline.DesiredFrameRateProperty, 但都没说加到哪里,在代码很多地方加上了,统统无效.最 ...