UVa 1111 Generalized Matrioshkas 数据结构课题

UVa 1111 Generalized Matrioshkas 数据结构专题

UVa  1111  Generalized Matrioshkas   数据结构课题 11111 - Generalized Matrioshkas 2642
34.25%
742
87.60%

题目链接接: 

http://uva.onlinejudge.org/index.phpoption=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=2052


题目大意

这题的题意比较难懂,看了好几变才明白。  就是有一个可以嵌套娃娃的娃娃,然后嵌套在里面的娃娃又可以继续嵌套娃娃。

然后要求直接嵌套在里面(内一层)的娃娃的尺寸大小之和不能超过外面的。 例如,-3 -2 2 3,代表有两层,-3和3表示一个嵌套(这个娃娃的尺寸大小为3,且负数一定要在左边先出现),里面时-2和2表示一个大小2的娃娃。 再比如-5 -2 2 -1 1 5,表示有3个娃娃,5嵌套这2和1。当有更多层的嵌套时,如-9     -7     -2    2     -3     -2     -1    1    2    3    7    9,表示9嵌套着7.然后7又嵌套着2(左边的-2,2)和3, 3又嵌套这2(右边出现的-2,2), 这个2又嵌套着1。 只要相邻的层次,内一层的大小相加起来小于(不能等于)外一层的大小就满足条件。


解题思路

这一题也和“括号嵌套”有点像。 首先是题目的输入,由于一开始没有采用一个好的输入方案,导致WA了无数次,浪费了几个小时。 然后题目需要注意的一些地方:1.如果娃娃个数是奇数,则直接判断错误; 2. 正数个数和负数不想等,也是错误的; 3.如果

正数先于对应的负数出现,也是错误的。 


我采用的方法是,开一个数组level,用来保存各个层次娃娃的容量,然后每次遇到一个‘)’时就进行处理, 把当前这个层次的”外层“容量减去这个层次的大小。 当有个层次为0或负数时,则可以判断是错误的。最需要注意的是怎样处理和判断当前层次时哪一层。


样例输入

-9 -7 -2 2 -3 -2 -1 1 2 3 7 9
-9 -7 -2 2 -3 -1 -2 2 1 3 7 9
-9 -7 -2 2 -3 -1 -2 3 2 1 7 9
-100 -50 -6 6 50 100
-100 -50 -6 6 45 100
-10 -5 -2 2 5 -4 -3 3 4 10
-9 -5 -2 2 5 -4 -3 3 4 9


样例输出

:-) Matrioshka!
:-( Try again.
:-( Try again.
:-) Matrioshka!
:-( Try again.
:-) Matrioshka!
:-( Try again.