HDU 5092 Seam Carving(上海邀请赛基础DP)
2014-11-14 21:30
471 查看
看完样例以为自己懂了,然后五分钟WA了四次,终于静下心来看看题目。
就是从上往下找到一条线,就是假设上一行的点是x,那么下一行能取到的点是x+1,x-1,x三种,求所有值都最小的线都在每一行取了那些点,输出每行取到的点的标号。
大概推算一下,明明就是数塔嘛- -,然后按照数塔的思路找出来最上方的某个最小值的标号y,然后y肯定是在下一行的y+1,y-1,y这三个点中最小的那个得来的。三个数字找最小只需要注意相同取最左边就好。
就是从上往下找到一条线,就是假设上一行的点是x,那么下一行能取到的点是x+1,x-1,x三种,求所有值都最小的线都在每一行取了那些点,输出每行取到的点的标号。
大概推算一下,明明就是数塔嘛- -,然后按照数塔的思路找出来最上方的某个最小值的标号y,然后y肯定是在下一行的y+1,y-1,y这三个点中最小的那个得来的。三个数字找最小只需要注意相同取最左边就好。
#include<stdio.h> #include<string.h> #include<stdlib.h> int min1(int x,int y) { if(x<y) return x; return y; } int min2(int x,int y,int z) { int min; min=min1(x,y); min=min1(min,z); return min; } int main() { int a[105][105],i,j,n,m,T; scanf("%d",&T); for(int cas=1;cas<=T;cas++) { scanf("%d %d",&m,&n); memset(a,0,sizeof(a)); for(i=0;i<=m;i++) a[i][0]=a[i][n+1]=0x7ffffff; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) scanf("%d",&a[i][j]); } for(i=m;i>=1;i--) { for(j=1;j<=n;j++) { if(j==1) a[i][j]+=min1(a[i+1][j],a[i+1][j+1]); else if(j==n) a[i][j]+=min1(a[i+1][j],a[i+1][j-1]); else a[i][j]+=min2(a[i+1][j],a[i+1][j+1],a[i+1][j-1]); } } printf("Case %d\n",cas); int x,min=0x7fffffff,y; for(i=1;i<n;i++) { if(min>=a[1][i]) { min=a[1][i]; x=i; } } printf("%d",x); for(i=2;i<=m;i++) { min=0x7ffffff; for(j=x-1;j<=x+1;j++) { if(a[i][j]<=min) { y=j; min=a[i][j]; } } x=y; printf(" %d",x); } printf("\n"); } return 0; }
相关文章推荐
- HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
- hdu 5092 Seam Carving 2014上海全国邀请赛——题目重现
- 【DP】 HDU 5092 Seam Carving
- 【DP】 HDU 5092 Seam Carving
- HDU 5092 Seam Carving(DP, 路径)
- hdu 5092 Seam Carving 简单DP ”水一炮试试“大法
- 2014上海全国邀请赛1003(hdu 5092)
- HDU 5092 Seam Carving(DP)
- HDU 5092 Seam Carving (dp)
- HDU 5092 Seam Carving (DP+打印路径)
- hdu 5092 Seam Carving(dp)
- 上海邀请赛 A题目 HDU 5236(dp)
- HDU5092 Seam Carving(2014上海全国邀请赛——题目重现)(DP)
- hdu 5092 Seam Carving (简单数塔DP,题没读懂,,不过可以分析样例)
- hdu 5092 Seam Carving(DP+记录路径)
- Hdu 5092 Seam Carving(dp)
- Hdu 5045 Contest (2014 上海Online) (状态压缩dp)
- HDU 3555 Bomb(基础数位dp)
- hdu 5047 Sawtooth--2014acm上海赛区邀请赛(附java模板)
- 【HDU】2014上海全国邀请赛——题目重现(感谢上海大学提供题目) 题解