hdu5092
来源:互联网 发布:日期提醒软件 编辑:程序博客网 时间:2024/06/02 23:02
#include<iostream>#include<cstdio>using namespace std;#define INF 0xfffffffint s[110][110];int dp[110][110];int path[110][110];int m,n;void print(int i,int j){if(i<0) return;if(path[i][j]==-1){cout<<j+1<<' ';return ;}else{print(i-1,path[i][j]);//递归上一行的行标,列标cout<<j+1; //输出当前列标if(i!=m-1) cout<<' ';}}int main(){int t;cin>>t;int cnt=0;while(t--){cin>>m>>n;for(int i=0;i<m;i++)for(int j=0;j<n;j++){cin>>s[i][j];dp[i][j]=INF;path[i][j]=-1;//记录i-1行的列标}for(int i=0;i<n;i++)dp[0][i]=s[0][i];for(int i=1;i<m;i++)for(int j=0;j<n;j++){if(j<n-1&&dp[i][j]>dp[i-1][j+1]+s[i][j]) //先从最右边的开始dp{dp[i][j]=dp[i-1][j+1]+s[i][j];path[i][j]=j+1;}if(dp[i][j]>dp[i-1][j]+s[i][j]){dp[i][j]=dp[i-1][j]+s[i][j];path[i][j]=j;}if(j>=1&&dp[i][j]>dp[i-1][j-1]+s[i][j]){dp[i][j]=dp[i-1][j-1]+s[i][j];path[i][j]=j-1;}}int ans=INF,ansj;for(int j=0;j<n;j++){if(dp[m-1][j]<=ans){ans=dp[m-1][j];ansj=j;}}printf("Case %d\n",++cnt);print(m-1,ansj);cout<<endl;}}
0 0
- HDU5092
- hdu5092
- HDU5092 Seam Carving
- hdu5092 Seam Carving(dp 打印路径)
- ACM学习感悟——HDU5092(dp)
- HDU5092 Seam Carving(2014上海全国邀请赛——题目重现)(DP)
- android 关机充电 充电动画 从入门到精通
- Android.mk初识
- Android root相关材料
- PHPCMS网站登陆增加点触验证码
- 12、canvas标签之阴影
- hdu5092
- poj 2635 The Embarrassed Cryptographer
- Android View框架总结(三)View工作原理
- HITS算法--从原理到实现
- BZOJ 1854 并查集
- vivado仿真设计流程
- 盘点最流行的Java工具
- 纹理映射技术
- Python快速学习第八天