UVa116 (单向TSP,多决策问题)
/*----UVa1347 单向TSP
用d(i,j)表示从格子(i,j)出发到最后一列的最小开销
则在(i,j)处有三种决策,d(i,j)转移到d(i-1,j+1),d(i,j+1),d(i+1,j+1),还需要一个数组来记录每一步决策过程
*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<vector>
#include<string.h>
#include<math.h>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 100+10;
int a[maxn][maxn], dp[maxn][maxn],c[maxn][maxn];
int n, m;
void print(int i, int j){
if (j < m){
printf("%d", i+1);
printf(j == m - 1 ? "\n" : " ");
print(c[i][j], j + 1);
}
}
int main(){
int i, j,k;
while (~scanf("%d%d", &n, &m)){
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
scanf("%d", &a[i][j]);
for (j = m - 1; j >= 0; j--)
for (i = 0; i < n; i++){
if (j == m - 1) dp[i][j] = a[i][j]; //边界条件
else{
if (i == 0)k = n- 1;
else k = i - 1;
dp[i][j] = dp[k][j + 1] + a[i][j];
c[i][j] = k; if (dp[i][j] == dp[i][j + 1] + a[i][j] && i<c[i][j])
c[i][j] = i;
if (dp[i][j]>dp[i][j + 1] + a[i][j]){
dp[i][j] = dp[i][j + 1] + a[i][j];
c[i][j] = i;
} if (i == n - 1) k = 0;
else k = i + 1;
if (dp[i][j] == dp[k][j + 1] + a[i][j] && k<c[i][j])
c[i][j] = k;
if (dp[i][j]>dp[k][j + 1] + a[i][j]){
dp[i][j] = dp[k][j + 1] + a[i][j];
c[i][j] = k;
}
}
}
j = 0;
for (i = 1; i < n; i++){
if (dp[i][0]<dp[j][0])
j = i;
}
print(j, 0);
printf("%d\n", dp[j][0]);
}
return 0;
}
UVa116 (单向TSP,多决策问题)的更多相关文章
- UVa-116 Unidirectional TSP 单向旅行商
题目 https://vjudge.net/problem/uva-116 分析 设d[i][j]为从(i,j)到最后一列的最小开销,则d[i][j]=a[i][j]+max(d[i+1][j+1], ...
- UVA116 Unidirectional TSP 单向TSP
分阶段的DAG,注意字典序的处理和路径的保存. 定义状态d[i][j]为从i,j 出发到最后一列的最小花费,转移的时候只有三种,向上,向下,或平移. #include<bits/stdc++.h ...
- Uva116 Unidirectional TSP
https://odzkskevi.qnssl.com/292ca2c84ab5bd27a2a91d66827dd320?v=1508162936 https://vjudge.net/problem ...
- UVA116 单向 DSP(多段图最短路)
单向 DSP [题目链接]单向 DSP [题目类型]dp &题解: 紫书P271 这块的字典序排序我觉得挺厉害的,每次都把那3步sort一下,之后if (v< d[i][j]) 这块的小 ...
- HDU 1619 Unidirectional TSP(单向TSP + 路径打印)
Unidirectional TSP Problem Description Problems that require minimum paths through some domain appea ...
- UVa 116 单向TSP(多段图最短路)
https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...
- Uva 116,单向TSP
题目链接:https://uva.onlinejudge.org/external/1/116.pdf 和矩形嵌套,巴比伦塔差不多. 题意: 给出矩阵,这个矩阵是环形的,就是说第一行的上一行是最后一行 ...
- uva 116 单向TSP
这题的状态很明显. 转移方程就是 d(i,j)=min(d(i+1,j+1),d(i,j+1),d(i-1,j+1)) //注意边界 我用了一个next数组方便打印结果,但是一直编译错误,原来是不能用 ...
- UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)
题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...
随机推荐
- J2EE的十三种技术——JDBC
背景: 之前准备软考的时候,我们就学习过J2SE的视频.在进入J2EE之前,一定要复习和回顾下Java的基础知识,这对以后的学习十分重要.首先,简单回忆下java的体系结构.Java有三个体系结构:J ...
- PHP面向对象 封装与继承
知识点: PHP封装三个关键词: 一.public 公有的,被public修饰的属性和方法,对象可以任意访问和调用 二.private 私有的,被private修饰的属性和方法,只能在类内部的方法可以 ...
- 【计算机网络基础】用 telnet 检查 VPS 的某个端口是否处于监听状态
命令 telnet x.x.x.x p 其中 x.x.x.x 代表 VPS 的 IP 地址,p 代表要检查的端口号. 起因是我的 ss 不好使了.IP 没被封,查了一下,可能是 ssserver 的端 ...
- webpack watch模式产生*.hot-update.json文件
webpack --watch会产生*.hot-update.json文件,解决方法如下: output: { path: path.join(root, "dist"), fil ...
- Codeforces 932.C Permutation Cycle
C. Permutation Cycle time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- FOJ ——Problem 1759 Super A^B mod C
Problem 1759 Super A^B mod C Accept: 1368 Submit: 4639Time Limit: 1000 mSec Memory Limit : 32 ...
- python模块导入
官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 ...
- BZOJ 4261: 建设游乐场
4261: 建设游乐场 Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 38 Solved: 16[Submit][Status][Discuss] ...
- PHP高性能开发-多进程开发
硬件多核时代的软件业以前计算能力的提升一直在摩尔定律的指引下,沿着提升CPU时钟频率这条道路前进,从初期的几十MHz到如今的几GHz.但是,进入2002年以 来,CPU提升主频的困难越来越大,因为主频 ...
- 今天做一个winform,想直接把窗体改成输出类库,其他地方直接调结果总提示不能注册组件,回来调度,可以,总结,windows还是直接用新建的类型项目,改容易出错
如题, 对于winform程序,还是新建一个类库,这样,在类库里面可以添加窗体.这样可以提供其他程序集来调用里面的窗体