传送门
题目大意
一个栈内初始有个红色和蓝色的小球,请你按照以下规则进行操作
.只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色
.然后将栈顶的蓝球变成红色
.最后放入若干个蓝球直到栈中的球数为
以上步骤为一次操作 如栈中都是红色球,则操作停止,请问几次操作后停止 ainta出完题发现他自己不能所以想请你帮忙
代表红色,代表蓝色
思路
假设第i个球是蓝色,他变成红色对后面的蓝球没有影响
先做一遍模拟
1.将栈顶的所有红色球取出
2.将此时栈顶的蓝色球变成红色
3.用蓝色球填满空缺
可以发现:找到的第一个蓝球前的所有红球全变蓝了,而这个蓝球变成了红球
所以第i个蓝色球想出栈,等效于先走一步“x位置红,[1,i-1]位置蓝”,再让[1,i-1]依次出栈
(位置是蓝色球)
所以
即
所以
代码