交通网最短路径长 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份订单,他 ...
随机推荐
- SQL中的ON DUPLICATE KEY UPDATE使用详解
一:主键索引,唯一索引和普通索引的关系主键索引 主键索引是唯一索引的特殊类型. 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行.该列称为表的主键. 在数据库关系图中为表定义一个主键将自动创建 ...
- JAVA基础-继承机制
需要掌握的知识点: 包的使用 继承时,子类如何覆盖父类方法(重写和重载) 继承时,构造方法的执行过程 JVM中子类如何实例化(先实例化父,再实例化子) super和this关键字 final关键字 包 ...
- css制作简单loading动画效果【css3 loading加载动画】
曾经以为,loading的制作需要一些比较高深的web动画技术,后来发现大多数loading都可以用“障眼法”做出来.比如一个旋转的圆圈,并不都是将gif图放进去,有些就是画个静止图像,然后让它旋转就 ...
- css实现div多边框_box-shadow模拟多边框、outline描边实现
在css3中我们知道可以使用box-shadow属性轻松的为元素添加阴影效果,并且可以设置多组效果,每组参数值用逗号隔开.如果把box-shadow特性的两个偏移量 h-shadow .v-shado ...
- C++中cin>>a原理
int a; vector<int>res; while(cin>>a){ res.push_back(a); } 给出这段代码 可以输入1 2 3 4 5并以回车结束,从而 ...
- js创建函数的方式
一般一下这三种方式 第一种(函数声明): function sum1(num1,num2){ return num1+num2;} 没啥好说的 第二种(函数表达式): var sum2 = fun ...
- 详解GaussDB bufferpool缓存策略,这次彻底懂了!
摘要:华为云GaussDB(for mysql)是华为云自主研发的最新一代云原生数据库,采用计算存储分离.日志即数据的架构设计.具备极致可靠.极致性价比.多为扩展.完全可信等诸多特性. 一 .Gaus ...
- HDU 4143 A Simple Problem 题解
题目 For a given positive integer n, please find the saallest positive integer x that we can find an i ...
- 用Serverless Kubernetes为.NET (Core)应用保驾护航
前言 容器化对现在(0202年)来说,已经不算是什么新东西了,老黄最近也在公司推动这一块的发展,有幸落地了几个项目,有.NET Core的,也有.NET Framework的. 容器化现在主流的就是d ...
- springmvc返回接口中long型,页面接收时值却变了
Java序列化JSON时long型数值不准确 现象 项目中用到了唯一ID生成器.生成出的ID时long型的(比如说4616189619433466044).通过某个rest接口中返回json数据后,发 ...