HDU-1619-Unidirectional TSP
来源:互联网 发布:阿里云os 魅族 编辑:程序博客网 时间:2024/06/05 20:59
这个题属于一个比较简单的DP题,状态转移方程也就为其3个方向的转移,比较简单。需要注意上下边界的特殊处理。
代码:
#include<cstdio>#include<cstring>#include<iostream>#define MAX 102using namespace std;int m,n;int map[MAX][MAX],nxt[MAX][MAX];long long dp[MAX][MAX];int main(){ while(scanf("%d%d",&n,&m)!=EOF) {memset(map,0,sizeof(map));memset(dp,0,sizeof(dp));memset(nxt,0,sizeof(nxt));for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)scanf("%lld",&map[i][j]);for(int i=m;i>=1;i--){ for(int j=1;j<=n;j++) {int ita,itb,itc,res;if(j==n) ita=1,itb=n-1,itc=n;else if(j==1) ita=1,itb=2,itc=n;else ita=j-1,itb=j,itc=j+1;long long a=dp[ita][i+1],b=dp[itb][i+1],c=dp[itc][i+1];if(a<=b&&a<=c) res=ita;else if(b<=a&&b<=c) res=itb;else res=itc;dp[j][i]=dp[res][i+1]+map[j][i];nxt[j][i]=res; }}long long ans=1<<30;int ansa=0;for(int i=1;i<=n;i++) if(ans>dp[i][1]) {ansa=i;ans=dp[i][1]; }printf("%d",ansa);for(int i=1;i<m;i++){ ansa=nxt[ansa][i]; printf(" %d",ansa);}printf("\n%lld\n",ans); } return 0;}
- HDU-1619-Unidirectional TSP
- HDU-1619 Unidirectional TSP dp
- hdu-1619 Unidirectional TSP(dp)
- hdu 1619 单向TSP Unidirectional TSP
- HDU 1619 Unidirectional TSP (dp,dfs)
- HDU 1619 Unidirectional TSP(dp)
- HDU 1619:Unidirectional TSP【dfs & 回忆路径】
- hdu 1619 Unidirectional TSP【记忆化dp】
- hdu 1619 Unidirectional TSP 记忆化搜索
- 【DFS(记忆化)】hdu 1619 Unidirectional TSP
- Unidirectional TSP
- UVa 116 Unidirectional TSP
- UVA 116 - Unidirectional TSP
- UVa 116 - Unidirectional TSP
- uva 116 Unidirectional TSP
- 116 - Unidirectional TSP
- 116 - Unidirectional TSP
- UVa 116Unidirectional TSP
- 关于学习DDR2时值得一看的资料
- 线性表的链式存储(链表)
- android 模拟器不能关闭 和 ubuntu没有声音的 完美解决方案
- outlook接收邮件时间设置
- pycurl和urllib2的比较
- HDU-1619-Unidirectional TSP
- android 进程通信
- 股份与期权的分配示例
- IOS 开发环境,证书和授权文件
- 名企招聘经典面试编程题集锦[第1-10题]
- git学习一 基于linux ubuntu git安装与配置
- HDU 2023 求平均成绩
- 学习3D开发技术的优秀网站
- html5学习之路(Canvas画布1)