特种部队【动态规划】
双进程dp需要练习
【问题描述】
某特种部队接到一个任务,需要潜入一个仓库。该部队士兵分为两路,第一路士兵已经在正面
牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库。
当他们到达仓库时候,发现这个仓库的锁是一把很诡异的电子锁,上面是一排按钮,每个按钮
上都有一个数字……10秒钟后,总部返回了该锁的技术信息。要解开这把锁,首先要从左边的第
一个按钮开始向右按动,中间可以跳过某些按钮,按动到最右边的按钮后,反向向左按动。最终,
每个按钮都要按且仅按一次。每两个相邻按钮上数字之差的总和的最小值,便是解开这把锁的密码。
作为一支装备精良的特种部队,必须要在最短的时间内完成任务,解开这把锁,潜入仓库。
【输入文件】
输入文件force.in 第一行是一个n(2 <= n <= 1000)表示共有n个按钮。
第二行是n个正整数,代表从左至右各按钮上的数字,数值均不超过2000。
【输出文件】
输出文件force.out只有一个数,为这把锁的密码。
【输入样列】
5
1 2 3 4 5
【输出样列】
4
program force;
var
cost,f:array[0..1001,0..1001] of longint;
a:array[0..1001] of longint;
n,ans:longint;
procedure init;
var i:longint;
begin
assign(input,'force.in');reset(input);
assign(output,'force.out');rewrite(output);
fillchar(a,sizeof(a),0);
ans:=100000000;
readln(n);
for i:=1 to n do read(a[i]);
end;
function min(a1,a2:longint):longint;
begin
if (a1>a2) then exit(a2) else exit(a1);
end;
procedure main;
var i,j:longint;
begin
for i:=0 to n do begin // ※ 小技巧 1只能取一次所以可以增加一个点0 但是从0跳到其他地方的权值都是0!
cost[0,i]:=0;
cost[i,0]:=0;
end;
for i:=1 to n do
for j:=1 to n do begin
if i=j then continue;
cost[i,j]:=abs(a[i]-a[j]);
end;
fillchar(f,sizeof(f),$7);
f[0,0]:=0;
for i:=0 to (n-1) do
for j:=i to n do begin
f[i,j+1]:=min(f[i,j+1],f[i,j]+cost[j+1,j]);
f[j,j+1]:=min(f[j,j+1],f[i,j]+cost[j+1,i]); //从我设置的状态来看 都是小的在前面大的在后面 所以从i跳到j+1就变成了[j,j+1]
end;
for i:=1 to n do if (ans>f[i,n]) then ans:=f[i,n]+cost[i,n];
writeln(ans);
end;
procedure terminate;
begin
close(input);close(output);
end;
begin
init;
main;
terminate;
end.
转载于:https://www.cnblogs.com/ushiojamie/archive/2011/10/21/2220762.html
特种部队【动态规划】相关推荐
- 伍六七带你学算法 动态规划 ——不同路径
力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...
- 由动态规划计算编辑距离引发的思考
简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...
- LeetCode 10. Regular Expression Matching python特性、动态规划、递归
前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...
- 【动态规划】Part1
1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析: dp [0] = 0 dp [1] = 1 + ...
- 2016.4.2 动态规划练习--讲课整理
1.codevs1742 爬楼梯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿 ...
- 算法设计与分析第4章 动态规划(二)【DP序列问题】
第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...
- 算法设计与分析第4章 动态规划(一)【背包问题】
第3章动态规划(一)[背包问题] 基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的.不同子问题的数目常常只有多项式量级.在用 ...
- ADPRL - 近似动态规划和强化学习 - Note 7 - Approximate Dynamic Programming
Note 7 - 近似动态规划 Approximate Dynamic Programming 7. 近似动态规划 (Approximate Dynamic Programming) 7.1 近似架构 ...
- ADPRL - 近似动态规划和强化学习 - Note 6 - Mitigating the Curse of Dimensionality
Note 6 Mitigating the Curse of Dimensionality 减轻维度诅咒 6. Mitigating the Curse of Dimensionality 减轻维度诅 ...
最新文章
- JAVA面向对象-----final关键字
- js算法入门(3)--递归
- 深入推荐引擎相关算法 - 聚类
- VistaDB 数据库,.NET的新选择
- dnf时装预览怎么打开_DNF最疯狂的年代,纯色天空整套白给,“神话”宠物不卖只送...
- java 链表逆转_java 实现单链表逆转详解及实例代码
- python实现洗牌算法_【Python】洗牌算法及 random 中 shuffle 方法和 sample 方法浅析...
- 软件运行 计算机硬件环境,软件运行环境该怎么写
- k2p 登录路由器shell失败_斐讯路由器无法进入路由器登录管理界面怎么办
- oracle hint firstrow,stored outlines迁移成SQL执行计划基线
- 跟着示例学Ubuntu UFW防火墙设置
- 来吧 带你玩转 Excel VBA
- Linux挂载移动群晖硬盘,通过USB移动硬盘盒挂载群晖格式硬盘的方法
- laravel 发送邮件随记
- HTTP 请求是什么?
- kmcuda: GPU加速 Kmeans
- c++学习六(静态成员和友员函数)
- 未动科技与地平线达成战略合作,共推全场景智能驾驶加速落地
- Nature综述:肠道菌群与结直肠癌的研究进展
- MyBatis研习录(09)——MyBatis一对多查询
热门文章
- Hadoop学习笔记—1.基本介绍与环境配置
- [NOIp 2013]货车运输
- JAR文件——2017.08.04
- 2017.4.14-afternoon
- 20160808_安装JDK7u79
- 产品设计 | 价格理论与用户体验
- SEM那些被人混淆的事儿(已完结)
- 大数据时代,如何让个人信息不再“裸奔”?
- 笔试题目“检测IPv4地址”的实现
- 在50亿信息泄露事件面前,Struts 2 漏洞和CIA泄密都是小事 | 宅客周刊