【发布时间】:2016-02-01 18:16:15
【问题描述】:
我正在处理一个处理迭代的问题。我应该将两个整数传递给一个函数,它代表我必须找到所有排列的 N 个对象和 M 个值。我还得到了一个输出应该是什么样子的样本
void perm_iter(int N, int nr_values) 这应该打印的输出是:
Called : perm_iter(3, 2);
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
我通过使用交换函数来更改字符串的顺序以查找字符串的所有排列来理解递归的概念,但我不确定如何使用迭代来获得相同或相似的结果。这是我需要使用堆栈并迭代地推送/弹出来获得答案的情况吗?我在想我可以使用一组嵌套循环之类的东西来代替递归并获得类似这样的输出,但我不确定如何设置循环以遍历每个排列,而不仅仅是迭代,错过了一些可能的排列。
我们将不胜感激,感谢您抽出宝贵时间。
【问题讨论】:
-
那些不是排列,它们都是长度为 3 的字符串,你可以用 2 个符号组成。完全不同的野兽。请说明你想要什么。
-
这本质上是一个递增的里程表,以 m 为基数。
-
参数
N = 3在您的示例中似乎以每行三位数字表示。您能否解释一下参数nr_values = 2在您的示例中的功能?我认为1s 或0ss 的数量可能固定为2,但似乎并非如此。示例中nr_values对应什么?
标签: c algorithm loops iteration permutation