题意,给一个数字矩阵,要求从上往下的一条路径,使这条路径上数字之和最小,如有多条输出最靠右的一条。

数字三角形打印路径。。。

一般打印路径有两种选择,一是转移的时候加以记录,二是通过检查dp值回溯。

#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = ;
int g[maxn+][maxn];
int d[maxn+][maxn];
int pa[maxn+][maxn];
int m,n;
const int INF = 1e9;
void init(){
memset(*pa,-,sizeof(*pa));
for(int i = ; i < maxn; i++)
d[i][] = INF;
} vector<int> ans;
void print_ans(int s){
ans.clear();
ans.push_back(s);
for(int i = m-; i > ; i--){
s = pa[i][s];
ans.push_back(s);
}
for(int i = ans.size()-; i > ;i--){
printf("%d ",ans[i]);
}
printf("%d\n",ans[]);
} void work()
{
for(int i = ; i <= n; i++ )
d[][i] = g[][i];
for(int i = ; i < m; i++){
d[i][n+] = INF;
}
for(int i = ; i < m ;i++){
for(int j = ; j <= n ; ++j ){
int Min = -;
for(int k = ; k <=; k++){
if(d[i-][j+k] <= d[i-][j+Min]){
Min = k;
}
}
pa[i][j] = j+Min;
d[i][j] = d[i-][j+Min] + g[i][j];
}
}
int Min = ;
for(int i = ; i <= n; i++ ){
if(d[m-][Min] >= d[m-][i]){
Min = i;
}
}
print_ans(Min);
} int main()
{
int T;
init();
scanf("%d",&T);
for(int i = ; i <= T; i++){
printf("Case %d\n",i);
scanf("%d%d",&m,&n);
for(int i = ; i < m; i++)
for(int j = ; j <= n; j++)
scanf("%d",g[i]+j);
work();
}
return ;
}

最新文章

  1. unix shell命令
  2. C语言程序设计第九次作业
  3. css z-index属性使用过程中遇到的问题
  4. leetcode-【中等题】3. Longest Substring Without Repeating Characters
  5. Bootstrap 模态框 + iframe &gt; 打开子页面 &gt; 数据传输/关闭模态框
  6. Spring-Context之八:一些依赖注入的小技巧
  7. MyBatis 一级缓存与二级缓存
  8. Java继承和多态实例
  9. POJ 1062 ( dijkstra )
  10. mysql模拟rownum的一个方法
  11. linux 显示当前用户信息
  12. 模拟TAB键
  13. JSP技术
  14. C#中的反射原理及应用(转)
  15. iOS之 Category 属性 的理解
  16. Spring之DAO一
  17. Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。
  18. LeetCode——295. Find Median from Data Stream
  19. E: Unable to correct problems, you have held broken packages
  20. 一次完整的从webshell到域控的探索之路

热门文章

  1. 2018年第九届蓝桥杯国赛试题(JavaA组)
  2. 模拟一则ORA-600 [4194][][]故障并处理
  3. Angular中依赖注入方式的几种写法
  4. 你需要了解的有关.NET日期时间的必要信息
  5. Widows下Faster R-CNN的MATALB配置(GPU)
  6. HBase中报错 java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString
  7. Oracle树查询总结
  8. JAVAFX-2 开发应用
  9. python进阶10 MySQL补充 编码、别名、视图、数据库修改
  10. Codeforces 161D(树形dp)