题意:给一个n行m列矩阵    从第一列任意一个位置出发 每次往右 右上 右下三个方向走一格 直到最后一列   输出所类和的最小值和路径!! 最小值相同则输出字典序最小路径

很像一开始介绍的三角形dp  很明显用dp来做

但是输出路径非常麻烦

要使路径为最小字典序   对三个方向进行选择时 应该从小到大  这样就会是最小字典序

我一开始用一维的next数组   这样答案是不连续的  可能从1跳到5

应该用二维的next数组!!!!

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 2000+5
  4. #define inf 0x3f3f3f3f
  5.  
  6. int n,m;
  7. int dp[N][N];
  8. int next1[N][N];
  9. int mp[N][N];
  10. int first;
  11. int main()
  12. {
  13. while(scanf("%d%d",&n,&m)==&&(m+n))
  14. {
  15. for(int i=;i<=n;i++)
  16. for(int j=;j<=m;j++)
  17. scanf("%d",&mp[i][j]);
  18. int ans=inf;
  19. memset(next1 ,,sizeof next1);
  20. for(int i=;i<=n;i++)
  21. dp[i][m]=mp[i][m];
  22.  
  23. for(int j=m-;j>=;j--)
  24. for(int i=;i<=n;i++)
  25. {
  26. int dic[]={i-,i,i+};
  27. if(i==)dic[]=n;
  28. if(i==n)dic[]=;
  29. sort(dic,dic+);
  30. dp[i][j]=inf;
  31.  
  32. for(int k=;k<;k++)
  33. {
  34. if(dp[i][j]>mp[i][j]+dp[dic[k] ][j+])
  35. {
  36. dp[i][j]=mp[i][j]+dp[dic[k] ][j+];
  37. next1[i][j]=dic[k];
  38. }
  39. if(j==)
  40. {
  41. if(ans>dp[i][j])
  42. {
  43. ans=dp[i][j];
  44. first=i;
  45. }
  46. }
  47. }
  48. }
  49. printf("%d",first);
  50. for(int i=next1[first][],j=;j<=m;i=next1[i][j],j++)
  51. printf( " %d",i);
  52.  
  53. printf("\n%d\n",ans);
  54. }
  55. return ;
  56. }

9-4 Unidirectional TSP uva116 (DP)的更多相关文章

  1. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  2. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  3. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  4. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  5. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  6. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  7. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  8. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

  9. 最长公共子序列长度(dp)

    /// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. clock()、time()、clock_gettime()和gettimeofday()函数的用法和区别

    1. clock_gettime( ) 提供了纳秒的精确度 int clock_gettime(clockid_t clk_id, struct timespect *tp); clockid_t c ...

  2. CSS3 颜色模式

    HSL .test{background-color:hsl(<length>, <percentage>, <percentage>);} 1.length 表示 ...

  3. Spring Cloud(十一)声名式服务调用:Feign的使用 (上)

    一.写在前边 最近开发任务比较忙,下班也开始锻炼了,这个系列的文章就放了很久,看github我提交的Feign的入门程序已经好久了,今天正好得空,这就更上一贴,准备分几部分写 注意:之前几个项目中,笔 ...

  4. HttpContext.Current為空匯總

    1. async異步模式下為空 解决办法: <httpRuntime targetFramework="4.5" /> 或者: In your appSettings, ...

  5. Linux命令-xargs

    比如一个例子 echo "README.md" |cat echo "README.md" |xargs cat 第一个例子只是输出了README.md的文件名 ...

  6. 10 款非常棒的CSS代码格式化工具推荐

    如果你刚开始学习CSS,这意味着你的很多代码或结构可能需要优化,比如你可能过多使用了类.添加了多余的间隔或空行等等,这将导致代码臃肿.混乱,可读性和执行效率将大大降低. 本文为你整理了几款CSS工具, ...

  7. 【我们开发有力量之二】利用javascript制作批量网络投票机器人(自动改IP)

    帮朋友忙网络投票,粗粗地看了下,投票没有什么限制,仅有一个ip校验:每天每个ip仅能投票一次. 也就是说,可以写一个程序,自动更换IP地址(伪造IP地址),实现批量刷票的目的.于是我写了一个投票机器人 ...

  8. SpringCloud微服务简介(一)

    Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过 ...

  9. aarch64_g3

    glibc-langpack-wal-2.25-6.fc26.aarch64.rpm 2017-06-20 17:08 210K fedora Mirroring Project glibc-lang ...

  10. Codeforces Round #504 E. Down or Right

    Codeforces Round #504 E. Down or Right 题目描述:交互题. 有一个\(n \times n\)的方阵,有一些格子是障碍,从\((1, 1)\)出发,只能向右向下走 ...