题目传送门

 /*
题意:从上到下,找最短路径,并输出路径
DP:类似数塔问题,上一行的三个方向更新dp,路径输出是关键
*/
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <ctime>
#include <cstdlib>
using namespace std; const int MAXN = 1e2 + ;
const int INF = 0x3f3f3f3f;
int a[MAXN][MAXN];
int dp[MAXN][MAXN];
int pre[MAXN][MAXN]; void print(int x, int y)
{
if (x == )
{
printf ("%d", y); return ;
}
print (x - , pre[x][y]);
printf (" %d", y);
} int main(void) //HDOJ 5092 Seam Carving
{
//freopen ("C.in", "r", stdin); int n, m, t, cas = ;
scanf ("%d", &t);
while (t--)
{
scanf ("%d%d", &n, &m);
for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j) scanf ("%d", &a[i][j]);
memset (pre, , sizeof (pre)); for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j) dp[i][j] = INF;
for (int i=; i<=m; ++i) dp[][i] = a[][i]; for (int i=; i<=n; ++i)
{
for (int j=m; j>=; --j)
{
for (int k=; k>=-; --k)
{
if (j + k < || j + k > m) continue;
if (dp[i][j] > dp[i-][j+k] + a[i][j])
{
dp[i][j] = dp[i-][j+k] + a[i][j];
pre[i][j] = j + k;
}
}
}
} int k = m; int mn = dp[n][m];
for (int i=m-; i>=; --i)
{
if (mn > dp[n][i]) {mn = dp[n][i]; k = i;}
} printf ("Case %d\n", ++cas);
print (n, k);
puts ("");
} return ;
} /*
Case 1
2 1 1 2
Case 2
3 2 1 1 2 1
*/

最新文章

  1. iOS10 权限崩溃问题
  2. MIT 6.828 JOS学习笔记5. Exercise 1.3
  3. 使用PHPUnit + Selenium进行自动化测试
  4. Android权限安全(2)给基本组件自定义权限(以activity为例)
  5. 线程入门之start()和run()的区别
  6. grep恢复误删除文件内容(转)
  7. JUnit扩展:引入新注解Annotation
  8. 【HDOJ】2395 Alarm Clock
  9. VB编写的验证码生成器
  10. openstack windows 2008 img
  11. JAVA之File类创建对象构造函数传参数需要注意的几点
  12. 我是如何同时拿到阿里和腾讯offer的
  13. yii migrate 设计博客
  14. IEcss样式,行高的问题
  15. Android Studio 或 IntelliJ IDEA获取数字签名的方法
  16. 敦泰FT6X06单层自容调屏
  17. Nodejs的安装配置及如何在sublimetext2中运行js
  18. C语言 Struct 结构体在 Java 中的体现
  19. Ignite(二): 架构及工具
  20. 关于LaTeX公式排版

热门文章

  1. Apache Qpid Broker的安全机制
  2. ios如何获取手机的网络状态和运营商名称
  3. Cocos2d-js异步图片加载
  4. Android 代码设置RelativeLayout元素居中
  5. 使用SVPullToRefresh实现下拉刷新和下拉加载
  6. Dijkstra再理解+最短路计数
  7. bzoj 2836 魔法树 —— 树链剖分
  8. 【转】implements百科
  9. Code:log4
  10. const常量