我正试图找到一种方法来以编程方式显示n个蓝色硬币和m个红色硬币的所有排列。我知道答案是n + m C n,但我希望计算机向我显示所有n + m C n排列。只是为了澄清,如果n和m都是2,那么计算机应该给出的输出是:["bbrr", "brbr", "brrb", "rbbr", "rbrb", "rrbb"]
。此外,如果可能的话,代码应该是Python。如果你没有Python,它仍然有用,因为我知道很多语言。我尝试过使用itertools,但它不起作用,因为每个红色硬币被计算为不同。我已经尝试过研究很多关于Python的可区分性而没有发现任何东西。非常感谢帮助。
答案 0 :(得分:1)
certbot --apache --email=admin@domain -d www.domain
包有您要求的内容。但是,它会将相同的项目视为单独的实体,因此我们可以使用itertools
来清理重复项
set()
答案 1 :(得分:1)
这是Haskell中的基本递归解决方案。
arrangements :: (Integral n, Integral m) => n -> m -> [String]
arrangements n 0 = [stimes n "b"]
arrangements 0 m = [stimes m "r"]
arrangements n m = (('b' :) <$> arrangements (n - 1) m)
<> (('r' :) <$> arrangements n (m - 1))
λ> arrangements 2 2
["bbrr","brbr","brrb","rbbr","rbrb","rrbb"]
λ> arrangements 2 3
["bbrrr","brbrr","brrbr","brrrb","rbbrr","rbrbr","rbrrb","rrbbr","rrbrb","rrrbb"]
答案 2 :(得分:-1)
让我们为此创建一个递归函数,
f(0,0,currentStr)= currentStr
f(n,m,currentStr)= f(n-1,m,currentStr +“b”)和f(n,m-1,currentStr +“r”)