首页 > 解决方案 > 试图理解置换生成

问题描述

我试图理解这里给出的排列算法 我不清楚的是他们提到的第一块伪代码

array = [1, 2, 3, 4]
function permutation(start, end):
#i will go from start to end
    for i -> (start, end+1):
        permutation(start+1,end)

为什么在 for i 循环中使用 end+1 就我所知,我不清楚 end+1 应该超出必须应用排列的数组索引,但这里不是这种情况,这就是我我不清楚。

标签: calgorithmdata-structurespermutationbacktracking

解决方案


作者熟悉 Python,并在伪代码中使用了相同的(不幸的)习语。在 Python 中,范围的开头是inclusive,而 end 是Exclusive。稍后在该页面上的 Python 代码摘录证明确实如此:

for i in range(start, end+1):

使用此代码i将按顺序分配从start到包含的所有整数end,但不包括end + 1.

在 C 中,经常会<在循环中使用 - 然后它也会在那里发生:

for (size_t i = start; start < end + 1; start++)
                               ^^^^^^^

虽然更自然的是写

for (size_t i = start; start <= end; start++)

推荐阅读