UVA 116 Unidirectional TSP (白书dp)
http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=18206 1 /* 2 题目大意: 3 从第一列的任意一格出发,到子最后一列的任意一格,的最短路。(一开是理解错了,以为是到第n行m列那个格子,知道样例没过,才发现) 4 每一格只能这样走 5 6 7 8 而且第一行向上可以走到最后一行, 9 最后一行向下是第一行 10 */ 11 dp[i][j]存储 第[i][j]到一列的最短路 12 状态转移方程为: 13 dp[i][j]=min(dp[i-1][j+1],dp[i][j+1],dp[i+1][j+1]); 14 next[i][j]后继节点 15 #include<stdio.h> 16 #define maxn 200 17 #define inf 0xfffffff 18 #include<string.h> 19 int min(int x,int y) 20 { 21 if(x<y)return x; 22 else return y; 23 24 } 25 int n,m,next[maxn][maxn]; 26 int dp[maxn][maxn],map[maxn][maxn]; 27 void init() 28 { 29 int i,j; 30 memset(next,0,sizeof(next)); 31 for(i=0;i<=n;i++) 32 { 33 34 for(j=0;j<=m;j++) 35 dp[i][j]=inf; 36 } 37 for(i=1;i<=n;i++) 38 { 39 dp[i][m]=map[i][m]; 40 } 41 } 42 int dfs(int x,int y) 43 { 44 int sum,d1,d3; 45 46 if(y>m)return inf; 47 if(dp[x][y]!=inf)return dp[x][y]; 48 49 int k; 50 int x1,x2,x3; 51 52 if(x-1==0)d1=n; 53 else d1=x-1; 54 if(x+1>n)d3=1; 55 else d3=x+1; 56 57 x1=dfs(d1,y+1); 58 x2=dfs(x,y+1); 59 x3=dfs(d3,y+1); 60 61 if(x1>=inf&&x2>=inf&&x3>=inf){dp[x][y]=inf;return inf;} 62 else 63 { 64 if(x1<x2) 65 { 66 sum=x1; 67 k=d1; 68 } 69 else 70 { 71 if(x1==x2) 72 { 73 k=min(d1,x); 74 sum=x1; 75 } 76 else 77 { 78 k=x; 79 sum=x2; 80 } 81 82 } 83 if(sum>x3) 84 { 85 k=d3; 86 sum=x3; 87 88 } 89 else 90 { 91 if(sum==x3) 92 { 93 k=min(k,d3); 94 } 95 } 96 next[x][y]=k; 97 98 dp[x][y]=dp[k][y+1]+map[x][y]; 99 return dp[x][y]; 100 101 } 102 103 104 105 } 106 int GET() 107 { 108 int k,i,sum=inf; 109 for(i=1;i<=n;i++) 110 { 111 if(dp[i][1]<sum) 112 { 113 k=i; 114 sum=dp[i][1]; 115 } 116 } 117 for(i=1;i<=m;i++) 118 { 119 if(i==1) 120 printf("%d",k); 121 else printf(" %d",k); 122 k=next[k][i]; 123 } 124 printf("\n%d\n",sum); 125 return 0; 126 } 127 int main() 128 { 129 int i,j; 130 while(scanf("%d%d",&n,&m)!=EOF) 131 { 132 133 for(i=1;i<=n;i++) 134 { 135 for(j=1;j<=m;j++) 136 scanf("%d",&map[i][j]); 137 } 138 init(); 139 int ans=inf; 140 for(i=1;i<=n;i++) 141 dfs(i,1); 142 143 /*for(i=1;i<=n;i++) 144 { 145 for(j=1;j<=m;j++) 146 { 147 printf("%d ",dp[i][j]); 148 149 } 150 printf("\n"); 151 }*/ 152 153 GET(); 154 } 155 156 }
转载于:https://www.cnblogs.com/acSzz/archive/2012/05/27/2519947.html
UVA 116 Unidirectional TSP (白书dp)相关推荐
- UVA 116 Unidirectional TSP DP
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&p ...
- UVA 116——Unidirectional TSP
题意:给定一个n*m的矩阵,从第一列任意位置向右,右下,右上走一格,可以循环,要求经过的数字的和最小. 思路:记忆化搜索.每次有三个状态,从这三个状态中选择出最优的一个,然后状态累加,保存路径. co ...
- Unidirectional TSP UVA - 116(多阶段决策+输出字典序最小的路径)
Unidirectional TSP UVA - 116 题意: 给你m行n列的矩阵,从第一列出发,到最后一列. 要求 经过的整数和最小. 输出路径上,每列的行号,多解时,输出字典序最小的. 思路: ...
- UVa在线比赛单题汇总-----DP专题
动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...
- 白书P61 - 点集配对问题
白书P61 - 点集配对问题 状压DP #include <iostream> #include <cstdio> #include <cstring> using ...
- UVa 116 (多段图的最短路) Unidirectional TSP
题意: 有一个m行n列的正整数环形矩阵(即矩阵第一行的上一行是最后一行,最后一行的下一行是第一行),从第一列的任意位置出发,每次只能向右,右上,右下三个方向行走,输出路径及路径上所有数之和的最大值,多 ...
- 单向TSP问题(Uva 116)
题意:就是给你一个图 让你从第一列开始走到最后一列 寻找最小的路径,然后这一题难点在于 路径的记录以及第一行跟最后一行联通 最后一行跟第一行也是联通的 题目传送门 代码如下,紫书讲的很好了我就不写分析 ...
- Unidirectional TSP—dp
问题描述: Problems that require minimum paths through some domain appear in many different areas of comp ...
- 紫书动规 例题9-13 UVA - 1220 Party at Hali-Bula 树形dp
题目链接: https://vjudge.net/problem/UVA-1220 题意: 题解: 树形dp: 树的最大独立集问题 d[u][0]:=不选u能得到的最大人数 d[u][0]=sum{m ...
最新文章
- Android中有关Handler的总结
- 10秒完成Linux系统pip在线安装
- 数据库实时转移之Confluent介绍(一)
- 广域网智能流量调度—Vecloud
- Android 一s个相对完整的自动升级功能实现代码
- 进程之间的通信方式-共享内存
- 合并数组内的对象的数字
- python:就喜欢看你看不惯我又干不掉我的样子
- 阿里巴巴开源技术汇总:115个软件(五)
- Ubuntu源码安装Nginx
- 网线制作实验相关内容
- 解决弹出 “百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥”的方法
- springboot+Vue+Elementui医院网上预约挂号系统java项目
- iOS开发调试技巧之在App设置中切换服务器环境
- 项目管理之如何进行项目干系人管理
- 高中日语老师教师资格证考试成功通过前辈备考经验分享
- 如何应对 DDoS 勒索攻击?
- 用计算机用语说唯美的话,经典说说唯美句子
- 2022年第十一届认证杯数学中国数学建模国际赛小美赛:D题野生动物贸易是否应该长期禁止建模 38页一等奖论文及代码
- python自动抢票的原理_Python突破12306最后一道防线,实现自动抢票(附源码)
热门文章
- Mac下老弹出mackeeper的网页
- mendeley 安装Microsoft Word 插件 报错及解决
- 纯css3制作写轮眼开眼及进化过程
- 抽取JDBC工具类的方法
- lasagne embedding layer理解
- HTTP报文头解析(图文)
- (2011-12-14 旧博文搬运)闪耀十字军(ティンクル☆くるせいだーす)【2】
- Codeforces Gym 100286J Javanese Cryptoanalysis 傻逼暴力
- 亿级流量、高并发与高性能场景下的电商详情页架构_6(Redis Replication)
- PHP 开发 APP 接口 学习笔记与总结 - 静态缓存