我正在尝试让gdb运行带有输入重定向到stdin的程序.例如,没有gdb我会运行这样的程序:
prog < input.txt
Run Code Online (Sandbox Code Playgroud)
现在在gdb中,通常的做法是run < input.txt.但是,它对我不起作用,当这样做时,没有任何东西被重定向到stdin.
我正在使用Windows与MinGW.可能是什么问题呢?
假设我有一棵树使用深度优先搜索遍历,而我遍历算法,它看起来是这样的:
algorithm search(NODE):
doSomethingWith(NODE)
for each node CHILD connected to NODE:
search(CHILD)
Run Code Online (Sandbox Code Playgroud)
现在,在许多语言中,递归的最大深度,例如,如果递归深度超过某个限制,则过程将因堆栈溢出而崩溃.
如何在没有递归的情况下实现此函数,而是使用堆栈?在许多情况下,有很多局部变量 ; 它们可以存放在哪里?
假设我打开MS Paint,绘制一堆实心矩形,将其保存为png,并将其提供给您:

现在你必须找出我是如何绘制这些矩形的.对于此图像,您的算法将生成如下指令:
或者换句话说,给定一个图像,我想使用尽可能少的矩形命令来生成它.矩形命令根据其位置,长度,宽度和颜色绘制实心矩形.我该如何处理这个问题?
该算法应足够稳健,不仅可以处理通过放置矩形绘制的图像,还可以处理像照片一样的复杂图像.
我已经问过这个问题了,但我仍然感到困惑。我想将递归函数转换为没有递归的基于堆栈的函数。以斐波那契函数为例:
algorithm Fibonacci(x):
i = 0
i += Fibonacci(x-1)
i += Fibonacci(x-2)
return i
Run Code Online (Sandbox Code Playgroud)
(是的,我知道我没有提出基本情况,斐波那契的递归确实效率低下)
这将如何使用显式堆栈来实现?例如,如果我将堆栈作为while循环,则必须跳出循环才能评估第一次递归,并且无法在第一次递归后返回该行并继续进行第二次递归.