NiII_CMeNOH_2 @ 2024-11-26 11:50:43
(稍微讲一下思路,大约不算题解吧?)
大概想法就是用静态数组模拟栈,再用栈+循环模拟递归
那么我们先定义一个数组zb[14]并且初始化为0,然后定义一个整数ptr模拟指针
根据题意,我们需要做出三个解
所以第一层循环就是一个while循环,确保写完三个解以后退出循环:
while(flag<3){
......
}
在循环中,我们假设在进入某一次循环时已经放下的棋子是互相不能吃的
那么我们在某一次循环中的任务就很明确了: a.如果已经放下了n枚棋子,那么输出zb[14],弹出栈顶元素(ptr--;zb[ptr]++)即可;
b.如果已放下的棋子个数小于n,那么尝试放下一枚棋子;
c.如果无法放下n枚棋子(zb[ptr]==n),那么弹出栈顶元素(ptr--;zb[ptr]++);
题目大约是默认了必然能够给出三个以上答案的,所以我们没有必要处理栈被弹空的情况。
这是一个蒟蒻写给其他蒟蒻看的,大佬们轻点喷(
by LionBlaze @ 2024-11-26 12:37:29
tlqtj,jbl.
by tangzirui1016 @ 2024-11-26 12:40:43
@NiII_CMeNOH_2 其实 c++
的递归内部是使用栈实现的
by CatFromMars @ 2024-11-26 13:57:30
这正常交流做法有什么好举报的。
lz 的做法是不是模拟递归的堆栈 qwq?
by mayike @ 2024-11-26 14:07:42
@CatFromMars 讨论区题解是会被jb(我就被jb过
by NiII_CMeNOH_2 @ 2024-12-04 14:23:41
@CatFromMars
lz是废柴大学生,专有名词听不懂啦