我需要在给定的列表上生成排列。我设法做到了这一点
let rec Permute (final, arr) =
if List.length arr > 0 then
for x in arr do
let n_final = final @ [x]
let rest = arr |> List.filter (fun a -> not (x = a))
Permute (n_final, rest)
else
printfn "%A" f
编写了一个返回字符串所有排列的程序。试图将相同的逻辑应用于列表排列。我在最后一个元素上得到一个类型错误,因为python正在将lst的类型更改为一个不再具有pop方法的字符串。有什么办法可以避免这种情况吗?
def permutestring(string, newstr="", array=[]):
if len(string) == 0:
array.append(newstr)
for char in string:
permutestring(string.replace(char, "", 1), new
考虑字符串上的以下函数:
int F(string S)
{
int N = S.size();
int T = 0;
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (S[i] > S[j])
T++;
return T;
}
长度为N且包含所有成对不同字符的字符串S0总共有N!独特的排列。
例如,"bac“有以下6种排列:
bac
abc
cba
bca
acb
cab
考虑一下
我需要一个python函数(一个创建函数的函数),它为长度N的列表创建所有循环置换操作符。
对于python列表a(例如a = [1, 2, 3, 4,5,6], N= 6),可以定义一个函数
def cyclic_perm(a):
n = len(a)
b = [[a[i - j] for i in range(n)] for j in range(n)]
return b
这为您提供了列表的所有可能的循环排列,在本例中为6个列表。
我希望函数给我的不是列表,而是(在本例中)6个操作符,当应用到列表时,每个操作符都会给出一个排列的列表。
我正在尝试从一个str对象的排列创建一个列表。但是,结果列表具有重复项。我有以下代码: from itertools import permutations
a = permutations('144')
b = [''.join(i) for i in a]
print(b) 我做错了什么?我得到了以下信息: ['144', '144', '414', '441', '414', '441']