c - 试图理解置换生成
问题描述
我试图理解这里给出的排列算法 我不清楚的是他们提到的第一块伪代码
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 应该超出必须应用排列的数组索引,但这里不是这种情况,这就是我我不清楚。
解决方案
作者熟悉 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++)
推荐阅读
- c++ - 如何处理没有已知初始值的原始类型的声明(C++)?
- python - 运行 01_deploy_price_consumer 两次时出错 - 在 brownie 中杀死 ganache
- arm - ARM FVP MPS2 型号(CLCD Cortex-M7 MPS2)的时钟速度问题
- iphone - Wix Velo 本地存储无法在移动设备上运行
- windows - 如何像 Windows 搜索一样以编程方式搜索 Windows 系统设置
- java - Eclipse - 导入 java.io.FileOutputStream;不工作
- php - 尝试使用 gapi 从谷歌日历导入日历
- python - 中点求和Python的实现
- c# - 如何修复“'GameObject'类型的对象已被破坏但您仍在尝试访问它”
- android - Linux Makefile 内置于 android(arm64-v8a)