Description
从起点到终点有N步,如果“走”第K步,将会得到A[K]元钱,A[K]可能为负数。
你也可以花100元钱“跳过”当前的这一步,即不会得到A[K]。但是任何时刻身上的钱都必须是非负的。开始时,你身上共有0元。给定数组A,求在能到达终点的情况下最小需要走过(即不是用100元钱跳过)的步数。注意:最后一步必须走,不能选择跳过。
Input
共有两行。
第一行为整数N(0<=N<=100)。
第二行有N个整数,第K个数为A[K],-10000<=A[K]<=10000,。
Output
一个整数,表示需要走的最少步数。若无法走到终点,输出-1。
Sample Input
6
30 30 30 30 30 30
Sample Output
5
Data Constraint
本题两种不同做法,以下是dfs的
思路:
直接深搜(有时要相信暴力)
当前若不够100块钱跳过去就只能走过去,否则,两者皆可
当钱<0时退出
注意,还有一个剪枝,在代码里自己理解
代码:
const
maxn=10000000;