poj 2353 Ministry 对规划方向有要求的dp

来源:互联网 发布:工业之家软件 编辑:程序博客网 时间:2024/05/20 03:40
//poj 2353//sep9#include<iostream>using namespace std;int dp[128][512],cost[128][512],path[128][512];int m,n;void print(int row,int col){if(path[row][col]==col)print(row-1,col);else if(path[row][col]==col+1)print(row,col+1);else if(path[row][col]==col-1)print(row,col-1);printf("%d\n",col);}int main(){scanf("%d%d",&m,&n);for(int i=1;i<=m;++i)for(int j=1;j<=n;++j)scanf("%d",&cost[i][j]);for(int j=1;j<=n;++j)dp[1][j]=cost[1][j],path[1][j]=-1;for(int i=2;i<=m;++i){for(int j=1;j<=n;++j)dp[i][j]=dp[i-1][j]+cost[i][j],path[i][j]=j;for(int j=n-1;j>=1;--j)if(dp[i][j]>dp[i][j+1]+cost[i][j])dp[i][j]=dp[i][j+1]+cost[i][j],path[i][j]=j+1;for(int j=2;j<=n;++j)if(dp[i][j]>dp[i][j-1]+cost[i][j])dp[i][j]=dp[i][j-1]+cost[i][j],path[i][j]=j-1;}int ans=INT_MAX,ans_j;for(int j=1;j<=n;++j)if(ans>dp[m][j])ans=dp[m][j],ans_j=j;print(m,ans_j);return 0;}

0 0
原创粉丝点击