gpt4 book ai didi

c - 查找或排列给定数字的所有组合

转载 作者:行者123 更新时间:2023-11-30 17:30:36 25 4
gpt4 key购买 nike

我希望你们一切都好。我有一个有趣的问题,一直困扰着我。它是关于以精确的顺​​序生成组合。例如,我有 4 个变量(可以变化),这 4 个变量有一些增加的限制,例如在本例中为 2。所以我想按以下顺序生成 2d 矩阵:

<小时/>
0 0 0 0
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 0 0
1 0 1 0
1 0 0 1
0 1 1 0
0 1 0 1
0 0 1 1
1 1 1 0
0 1 1 1
1 1 1 1
2 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
2 1 0 0
2 0 1 0
......
......
and so on.

变量的数量(在本例中为 4)可以改变,并且最大限制(在本例中为 4)也可以改变。即使我也找到了所有可能的组合,但我无法按此顺序排列它们。如果有人给出答案那就太好了。干杯!

最佳答案

我假设您有 n 个变量,每个变量的范围都可以从 0 到 b-1。你想要的只是计算以 b 为基数的 n 位数字。例如,如果n = 2b = 3,那么您想要生成的序列是

00
01
02
10
11
12
20
21
22

要实现此目的,请编写如下所示的循环:(警告:未经测试的代码)

def inc(v, b):
for i in range(len(v)):
v[i] = v[i] + 1
if v[i] < b:
break
v[i] = 0
def is_zero(v):
for i in range(len(v)):
if v[i] != 0:
return False
return True

v = [0, 0, 0]
b = 3
while True:
print(v)
inc(v, b)
if is_zero(v):
break

如果您仔细观察其工作原理,您应该会看到如果变量具有不同的上限,如何对其进行概括。

关于c - 查找或排列给定数字的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25068774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com