DP水题

求从上到下走完,使所取得权值最小,并输出路径,若有多个满足,则输出靠右的

#include "stdio.h"
#include "string.h" int inf=0x3f3f3f3f; struct node
{
int x,y;
}dp[110][110];
int main()
{
int Case,ii,i,j,n,m,ans;
int a[110][110];
scanf("%d",&Case);
for (ii=1;ii<=Case;ii++)
{
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&a[i][j]); memset(dp,inf,sizeof(dp)); for (i=1;i<=m;i++)
dp[n][i].x=a[n][i]; for (i=n-1;i>=1;i--)
for (j=1;j<=m;j++)
{
dp[i][j].x=dp[i+1][j].x+a[i][j];
dp[i][j].y=j; if (j-1>=1 && dp[i+1][j-1].x+a[i][j]<dp[i][j].x)
{
dp[i][j].x=dp[i+1][j-1].x+a[i][j];
dp[i][j].y=j-1;
} if (j+1<=m && dp[i+1][j+1].x+a[i][j]<=dp[i][j].x)
{
dp[i][j].x=dp[i+1][j+1].x+a[i][j];
dp[i][j].y=j+1;
}
}
ans=inf;
for (i=1;i<=m;i++)
if (dp[1][i].x<=ans)
{
ans=dp[1][i].x;
j=i;
}
printf("Case %d\n",ii);
printf("%d",j);
for (i=1;i<n;i++)
{
j=dp[i][j].y;
printf(" %d",j);
}
printf("\n");
}
return 0;
}

HDU 5092 DP的更多相关文章

  1. hdu 3016 dp+线段树

    Man Down Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  3. HDU 5092 Seam Carving (dp)

    题意,给一个数字矩阵,要求从上往下的一条路径,使这条路径上数字之和最小,如有多条输出最靠右的一条. 数字三角形打印路径... 一般打印路径有两种选择,一是转移的时候加以记录,二是通过检查dp值回溯. ...

  4. hdu 5092 Seam Carving (简单数塔DP,题没读懂,,不过可以分析样例)

    题意: 给一个m*n的矩阵,每格上有一个数. 找从第1行到第m行的一条路径,使得这条路径上的数之和最小. 路径必须满足相邻两行所选的两个数的纵坐标相邻(即一个格子必须是另一个格子的周围八个格子中的一个 ...

  5. HDU 5092

    http://acm.hdu.edu.cn/showproblem.php?pid=5092 卡读题,实质是每行取一个点,从上到下找一条路径权值和最小,点可以到达的地方是周围八个格子 类似数塔的dp, ...

  6. hdu 5092 线裁剪(纵向连线最小和+输出路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=5092 给一个m*n的矩阵,找到一个纵向的"线"使得线上的和最小并输出这条线,线能向8个方向延 ...

  7. HDU 1069 dp最长递增子序列

    B - Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  8. HDU 1160 DP最长子序列

    G - FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  9. hdu 4826(dp + 记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...

随机推荐

  1. Facade 门面模式 封装 MD

    门面模式 简介 作用:封装系统功能,简化系统调用 门面模式要求一个系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行.门面模式提供一个高层次的接口,使得系统更易于使用. 门面模式的 ...

  2. 检测设备平台,操作系统,方向 Javascript 库:Device.js

    Device.js 是一个可以让你检测设备的平台,操作系统和方向 JavaScript 库,它会自动在 <html> 标签添加一些设备平台,操作系统,方向相关的 CSS class,这样就 ...

  3. Android实现仿qq侧边栏效果

    最近从github上看到一个关于侧边栏的项目,模仿的是qq侧边栏. Github地址是https://github.com/SpecialCyCi/AndroidResideMenu ,这个项目是一个 ...

  4. Projects Plan For Remaining 2013

    Projects Plan For Remaining 2013 - Lisp Project: To Be. - Python Project: To Be. - Perl Project: To ...

  5. 在CentOS/RHEL上设置SSH免密码登录

    本文会告诉你怎样在 CentOS/RHEL 上设置 SSH 免密码登录.自动登录配置好以后,你可以通过它使用 SSH (Secure Shell)和安全复制 (SCP)来移动文件. SSH 是开源的, ...

  6. 字符串HASH 学习总结 &amp;&amp; 模板

    一.字符串HASH模板  取自挑战程序设计竞赛(第2版) </pre><pre code_snippet_id="446698" snippet_file_nam ...

  7. Matlab实现:图像边缘提取

    1. 边缘提取算法 方法一:一阶微分算子 Sobel算子 Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素. Roberts算子 ...

  8. Timus 2005. Taxi for Programmers 题解

    The clock shows 11:30 PM. The sports programmers of the institute of maths and computer science have ...

  9. Python面向对象编程 - 一个记事本程序范例(二)

    给程序加上控制台菜单 menu.py import sys from notebook import Notebook, Note class Menu: '''Display a menu and ...

  10. php之phpstorm入门

    入门篇!见这章