LongDD 将军为了平息延续数年战乱,决定释放战俘营中所有的俘虏。然而,LongDD 将军不打算释放敌军的统帅LongMM——因为这个家伙异常聪明,是个难缠的对手。所以LongDD 将军决定把LongMM 用链子固定到墙上。链子由n 个环组成,每个环有可能在墙上,也可能不在墙上。
“LongDD 将军,你为什么把我绑在墙上,不让我获得自由”,LongMM 咆哮道。
“但是,LongMM,你并没有被绑在墙上。我很确定你可以自己把链子解开”,LongDD 将军回答道,“但是请你在天黑之前解开,否则我会因为你制造噪音把你重新抓起来。”
请帮助LongMM 吧!链子由n 个环组成,编号为1,2,…,n。我们可以把每个环从墙上取下来或者从新放回墙上,但是需要遵循如下规则:
- 每一步只能取下或者装上一个环
- 编号为1 的环可以随意取下或装上
- 如果编号为1,…,k-1 的环都取下了,并且编号为k 的环在墙上,我们可以随意取下或者装上第k+1 个环
- 当所有环都取下来之后,LongMM 可以逃脱了
给定每个环的初始状态,请你编写程序计算LongMM 最少需要多少步才能逃脱。
第 1 行: 有一个整数n,(1<=n<=1000),表示环的个数
第 2 行: 有n 个整数,第i 个整数Oi=0,表示第i 个环在初始的时候为摘下的
状态;如果Oi=1,表示第i 个环初始的时候为装在墙上的状态。
可以尝试使用递推或动态规划求解
仅 1 行: 只有一个整数,表示最少需要多少步才能让LongMM 逃脱。
4
1 0 1 0
6