//
// 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++的更多相关文章

  1. hdu1428 记忆化搜索(BFS预处理最短路径和+DP+DFS)

    题意:有一块 n * n 大小的方形区域,要从左上角 (1,1)走到右下角(n,n),每个格子都有通过所需的时间,并且每次所走的下一格到终点的最短时间必须比当前格子走到重点的最短时间短,问一共有多少种 ...

  2. POJ 3311---Hie with the Pie(状压DP)

    题目链接 Description The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as ...

  3. 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( ...

  4. hdu1171(DP求两份物品的价值相差最小)

    题目信息: 给出一些物品的价值和个数.分成两份,是这两份的价值相差最小(DP方法) http://acm.hdu.edu.cn/showproblem.php? pid=1171 AC代码: /** ...

  5. scauoj 18025 小明的密码 数位DP

    18025 小明的密码 时间限制:4000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description 小明的密码由N(1<=N& ...

  6. bzoj1597[Usaco2008 Mar]土地购买 斜率优化dp

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5524  Solved: 2074[Submit] ...

  7. TZOJ 1937 Hie with the Pie(floyd+状压dp)

    描述 The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfo ...

  8. 求最短路径的三种算法: Ford, Dijkstra和Floyd

    Bellman-Ford算法 Bellman-Ford是一种容易理解的单源最短路径算法, Bellman-Ford算法需要两个数组进行辅助: dis[i]: 存储顶点i到源点已知最短路径 path[i ...

  9. 2800 送外卖[状态压缩dp]

    2800 送外卖  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 有一个送外卖的,他手上有n份订单,他 ...

随机推荐

  1. 使用Xmanager连接linux,操作“xhost +”时出现类似“xhost: unable to open display "192.168.1.1811:1.0" ”问题的解决

    远程连接linux服务器时,有的时候需要把服务器上的图形界面投影到本地来进一步操作,比如linux下安装oracle时就需要在oracle用户下允许视图状态投影到本地,这需要使用命令: xhost + ...

  2. java重试

    项目中有很多需要重试的场景,而每次都得写如下的逻辑 for (int i=0;i++;i<retry){ try{ do(//逻辑代码); if(success){ break; } }catc ...

  3. 【FastDFS】如何打造一款高可用的分布式文件系统?这次我明白了!!

    写在前面 前面我们学习了如何基于两台服务器搭建FastDFS环境,而往往在生产环境中,需要FastDFS做到高可用,那如何基于FastDFS打造一款高可用的分布式文件系统呢?别急,今天,我们就一起来基 ...

  4. LeetCode-Stack-Easy

    简单题 1. 有效的括号(leetcode-20) 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 1. 左括号必须用相同类型的右括 ...

  5. Vue中$nextTick的理解

    Vue中$nextTick的理解 Vue中$nextTick方法将回调延迟到下次DOM更新循环之后执行,也就是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,能够获取更新后的 ...

  6. [Python] list vs tupple

    前言 列表(list)和 元组(tupple) 是 Python 中常见的两种数据结构.这两者使用方法有一定的相似,俩者都是 Python 内置类型,都可以保存数据集合,都可以保存复合数据,我们同样可 ...

  7. 缘起:BigTable

    Google的三篇论文,Google File System,MapReduce以及Big Table可以说是整个大数据领域的三驾马车,这里,我们简单介绍下这三驾马车基本都是干哈的,重点解读下Bigt ...

  8. 使用原生js来控制、修改CSS伪元素的方法总汇, 例如:before和:after

    在网页中,如果需要使用辅助性/装饰性的内容的时候,我们不应该直接写在HTML中,这样会影响真正的内容,这就需要使用伪元素了,这是由于css的纯粹语义化是没有意义的.在使用伪元素的时候,会发现js并不真 ...

  9. 【经典DP】洛谷 P2782 友好城市

    嘤嘤嘤,昨天两个文化课老师在上奥赛时招呼我(亲切交流),今天又要写工作报告,没时间写题解,希望今天能补上 友好城市 题目://洛谷那粘来的题面竟然能把格式粘过来 题目描述 有一条横贯东西的大河,河有笔 ...

  10. URL编码转换函数:escape()、encodeURI()、encodeURIComponent()讲解

    转自:https://www.cnblogs.com/douJiangYouTiao888/p/6473874.html 函数出现时间:         escape()                ...