我正在阅读下面关于Geeksforgeeks的代码,但我无法理解它是如何工作的!如果有人能用图解说明。那太棒了!
这是代码:
static void swap(char a[], int l, int r) {
char temp = a[l];
a[l] = a[r];
a[r] = temp;
}
static void permute(char a[], int l, int r) {
if (l == r)
System.out.println(getString(a));
else {
for (int i = l; i <= r; i++) {
swap(a, l, i);
permute(a, l + 1, r);
swap(a, l, i); // backtrack
}
}
}
答案 0 :(得分:3)
我不知道你在哪里感到困惑:你提供的照片很清楚地向我解释了...... : - )
终止条件(图表的底行,2个红色和1个绿色项目): 如果列表中只剩下一个要考虑的元素,则无法交换它。排列完成。的返回强>
否则...... 对于阵列中剩余的每个项目,将该位置交换到最左侧可用的位置。移动&#34;固定&#34;指针向右一个点,并在数组的其余部分调用例程。
整体,这只是走下阵列:为第一个位置挑选每个项目(依次);为第二个选择每个剩余的项目(依次); ......继续到列表的末尾。
这能为你清理什么吗?