hdu 1227 fast food 动态规划
来源:互联网 发布:易语言仿ce源码 编辑:程序博客网 时间:2024/05/21 14:06
动态规划,用c[i][j]表示在i和j之间建一个仓库花费的最小距离,注意:ij之间建仓库要使距离最小应该建在a[(i+j)/2]上。
dp[i][j]表示前j个店建i个仓库的最小距离。状态转移方程:dp[i][j]=min{dp[i-1][k]+c[k+1][j]}(k=i-1,i,...,j-1。)
代码:
#include<stdlib.h>#include<limits.h>#include<string.h>#include<stdio.h>int main(){ int dp[202][202],c[202][202]; int n,m,a[202],tt=1; while(scanf("%d%d",&n,&m),n,m) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) { for(int j=i;j<=n;j++) { for(int k=i;k<=j;k++) { c[i][j]+=abs(a[k]-a[(i+j)/2]); } //printf("c%d %d %d\n",i,j,c[i][j]); } } for(int i=1;i<=n;i++) { dp[1][i]=c[1][i]; } for(int i=2;i<=m;i++) { for(int j=i+1;j<=n;j++) { int m=INT_MAX; for(int k=i-1;k<j;k++) { if(m>dp[i-1][k]+c[k+1][j]) m=dp[i-1][k]+c[k+1][j]; } dp[i][j]=m; //printf("dp%d %d %d\n",i,j,dp[i][j]); } } printf("Chain %d\n",tt++); printf("Total distance sum = %d\n",dp[m][n]); printf("\n"); }}
0 0
- hdu 1227 fast food 动态规划
- Fast Food hdu 1227 dp动态规划
- hdu 1227 fast food
- HDU 1227 Fast Food
- hdu 1227 fast food
- HDU 1227 Fast Food
- HDU 1227 Fast Food
- hdu fast food(1227)
- hdu 1227 Fast Food
- hdu 1227 Fast Food
- ZOJ 1196 Fast Food 动态规划
- UVA 662 Fast Food +经典动态规划
- HOJ-1005 Fast Food(动态规划)
- (DP) HDU 1227 Fast Food
- HDU 1227 Fast Food DP
- hdu 1227 Fast Food(dp)
- hdu-1227 Fast Food DP
- HDU 1227 Fast Food (DP)
- 1.5.2 从简单到实用
- hdu2030 汉字统计
- 室内高尔夫依然可以高杆
- 08-2. 求矩阵的局部极大值(15)
- 高尔夫模拟器不缺球技高超的顶尖高手
- hdu 1227 fast food 动态规划
- 【win8.1开发总结】win8.1磁盘分组异常,win8.1我的电脑中排序,win8.1盘符排序异常,win8.1硬盘排序异常,win8.1网盘排序,网盘在c盘前面,网盘比c盘靠前
- 送情报
- 热爱工作就等于热爱生活
- 开篇-IT监控系统系列
- 设置div隐藏状态
- redis+tomcat session共享实践
- 最大流 SAP模板
- 暑期个人赛--第七场--A(有个自己的坑,坑了很久)