poj 2353 DP 求从一个矩形第1层走到最后一层的最小花费
来源:互联网 发布:淘宝 御品电动尾门 编辑:程序博客网 时间:2024/06/07 07:25
#include<cstdio>#include<cstring>#define INF 0x3f3f3f3fstruct{int x,y;}step[510][510];int dp[510][510];int d[510][510];int put[10000];int main(){int m,n;scanf("%d%d",&m,&n);for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)scanf("%d",&d[i][j]);for(int j=1;j<=n;j++){ dp[1][j]=d[1][j]; step[1][j].x=j; step[1][j].y=0;}for(int i=2;i<=m;i++){ for(int j=1;j<=n;j++){dp[i][j]=dp[i-1][j]+d[i][j];step[i][j].x=j;step[i][j].y=i-1;}for(int j=2;j<=n;j++){if(dp[i][j]>dp[i][j-1]+d[i][j]){dp[i][j]=dp[i][j-1]+d[i][j];step[i][j].x=j-1;step[i][j].y=i;}}for(int j=n-1;j>=1;j--){if(dp[i][j]>dp[i][j+1]+d[i][j]){dp[i][j]=dp[i][j+1]+d[i][j];step[i][j].x=j+1;step[i][j].y=i;}}}int res=INF,lo;for(int j=1;j<=n;j++) if(res>dp[m][j]){res=dp[m][j];lo=j;} int tot=1;put[tot]=lo;while(step[m][lo].y!=0){put[++tot]=step[m][lo].x;if(step[m][lo].y==m)lo=step[m][lo].x; elsem--;} for(int i=tot;i>=1;i--)printf("%d\n",put[i]);return 0;}
0 0
- poj 2353 DP 求从一个矩形第1层走到最后一层的最小花费
- DP求最小花费
- 阿里面试题之求完全二叉树的最后一层的最后一个节点
- 每次可以从里面拿出一个放在最前(或最后),求最小的次数把数列排好序
- 【求一个点到各个点的来回花费和】POJ
- poj 1191 把一个矩形分成n块,求其均方差最小 dp
- UVA 10714-Ants(求花费的最大最小时间)
- 剑指Offer——约瑟夫环,0,1,...n-1围成的环,从0开始每次删除第m个,求最后剩余的一个数字
- poj 3280 判断得到回文串的时候最小花费
- POJ 3723 MST(建军队的最小花费)
- CUGB图论专场:Traveling by Stagecoach 状压DP求最短路中的最小花费时间
- 【codeforces 675E】【DP+线段树维护】【给出n个车站,并告诉你第i个车站有从i+1到a[i]个车站的直达票,问你所有车站到其余各个车站的最小车票花费和】
- 求包括n个矩形的最小矩形面积模板
- ZOJ3715 竞选班长求最小花费
- HDU 3987 求断开两点最小花费下的边数 最小割
- JD 1086:最小花费(dp)
- uestc599最小花费【单调队列优化dp】
- 求从一个矩形的一个点到其对角点有多少种走法
- 从图片中抓取文字
- 一个数组实现两个栈
- 第三册DNS
- jdk1.8降级
- 设计模式之装饰模式
- poj 2353 DP 求从一个矩形第1层走到最后一层的最小花费
- 程序或-内存区域分配(五个段)--终于搞明白了
- .net mvc5 (三)
- 欢迎使用CSDN-markdown编辑器
- POJ 1083 Moving tables解题报告
- 服务端Bitbucket 客户端sourcetree的代码提交过程(commit process with Bitbucket and sourcetree)
- Android之EditText限制6个中文12个英文
- leetcode154Find Minimum in Rotated Sorted Array II
- 过河问题的代码实现