2 solutions
-
0
题面描述:
塔子哥在玩积木塔游戏,按照特定规则添加标有正整数的积木块。当他添加新的积木时,如果新积木的数字与塔顶积木的数字相同,他会取下这两块积木,将它们的数字相加后乘以二,然后放回一块新积木;如果塔顶的数字等于下面连续几块积木的和,他也会进行相同操作。若两个条件都不满足,他就将新积木简单放在塔顶。最终,请输出游戏结束后积木塔上从顶到底的数字序列。
思路
这题是一道模拟题,抽象一下题意,每次元素入栈时,判断一下:
-
如果栈顶元素 等于第二个元素,则删除最顶上的两个元素,并将 入栈。
-
如果栈顶元素 等于前面所有元素之和,则删除前面所有的元素,并将 入栈。
-
否则不进行操作
由于数据范围只有 1000,每次插入一个新的 时,可以暴力判断一下当前是否满足题目条件,并模拟即可,具体操作可看代码。
题解
这道题目是一个模拟题,要求我们根据特定规则处理一个整数序列。具体规则如下:
- 条件一:如果栈顶元素等于当前添加的元素,则删除栈顶的两个元素,并将入栈。
- 条件二:如果栈顶元素等于栈中所有元素的和,删除栈中的所有元素,并将入栈。
- 默认情况:如果上述条件都不满足,则直接将元素放入栈中。
在实现上,我们使用一个动态数组(
vector
)来模拟栈的操作。对于每个新的元素,我们需要判断是否满足上述条件,利用累加和和栈的结构来进行操作。由于数据量限制在 1000 以内,可以使用暴力的方法逐一检查。AC代码
cpp
java
##python
-
- 1
Information
- ID
- 82
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 272
- Accepted
- 59
- Uploaded By