标签: permutation

C#排列一系列的arraylists?

我有一个ArrayList [] myList,我正在尝试创建一个列表,列出数组中值的所有排列.

示例:(所有值均为字符串)

myList[0] = { "1", "5", "3", "9" };
myList[1] = { "2", "3" };
myList[2] = { "93" };
Run Code Online (Sandbox Code Playgroud)

myList的计数可以变化,因此事先不知道它的长度.

我希望能够生成一个类似于以下所有排列的列表(但有一些额外的格式).

1 2 93
1 3 93
5 2 93
5 3 93
3 2 93
3 3 93
9 2 93
9 3 93
Run Code Online (Sandbox Code Playgroud)

这是否理解我想要完成的事情?我似乎无法想出这样做的好方法,(如果有的话).

编辑:
我不确定递归是否会干扰我以自己的方式格式化输出的愿望.对不起我之前没有提到我的格式.

我想最终构建一个string []数组,其中包含如下格式的所有组合:

对于"1 2 93"排列

我希望输出为"val0 = 1; val1 = 2; val2 = 93;"

我现在将尝试递归.谢谢Dr.Jokepu

c# arrays arraylist permutation

11
推荐指数
4
解决办法
2万
查看次数

任意数量的嵌套循环?

我希望采用任意数量的列表(例如[2,1,4 ...],[8,3,...],...)并从每个列表中选择数字以生成所有排列.例如:

[2,8,...],[2,3,...],[1,8,...],[1,3,...],[4,8,...], [4,3,...],......

这可以使用嵌套的for循环轻松完成,但由于我希望它接受任意数量的列表,似乎for循环必须是硬编码的.每个列表一个.此外,由于我的程序可能会产生数万个排列,我想一次生成一个单独的排列(而不是一次性计算它们并将结果存储到向量中).有没有办法以编程方式完成此操作?

由于在编译时知道列表的数量,我想也许我可以使用基于模板的元编程.然而,这看起来很笨拙,也不符合"一次一个"的要求.有什么建议?

c++ nested metaprogramming permutation

11
推荐指数
2
解决办法
4575
查看次数

查找在Python中拆分字符串的所有列表排列

我有一串字母,我想分成所有可能的组合(字母的顺序必须保持固定),这样:

s = 'monkey'
Run Code Online (Sandbox Code Playgroud)

变为:

combinations = [['m', 'onkey'], ['mo', 'nkey'], ['m', 'o', 'nkey'] ... etc]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python string split permutation

11
推荐指数
4
解决办法
3702
查看次数

字符串的排列:如何删除重复的排列?

这是打印字符串字符排列的标准函数:

void permute(char *a, int i, int n)
{
   int j;
   if (i == n)
     printf("%s\n", a);
   else
   {
        for (j = i; j < n; j++) //check till end of string
       {
          swap((a+i), (a+j));
          permute(a, i+1, n);
          swap((a+i), (a+j)); //backtrack
       }
   }
} 

void swap (char *x, char *y)
{
    char temp;
    temp = *x;
    *x = *y;
    *y = temp;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但有一个问题,它还打印一些重复的排列,exapmle:

如果字符串是"AAB"

输出是:

AAB
ABA
AAB
ABA
BAA
BAA
Run Code Online (Sandbox Code Playgroud)

这也有3个重复的条目.

有没有办法防止这种情况发生?

-

谢谢

Alok Kr.

c c++ algorithm permutation

11
推荐指数
1
解决办法
1万
查看次数

费雪耶茨变异

经典的Fisher Yates看起来像这样:

void shuffle1(std::vector<int>& vec)
{
    int n = vec.size();
    for (int i = n - 1; i > 0; --i)
    {
        std::swap(vec[i], vec[rand() % (i + 1)]);
    }
}
Run Code Online (Sandbox Code Playgroud)

昨天,我错误地"向后"实现了迭代:

void shuffle2(std::vector<int>& vec)
{
    int n = vec.size();
    for (int i = 1; i < n; ++i)
    {
        std::swap(vec[i], vec[rand() % (i + 1)]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个版本是否比第一个版本更糟(或更好)?它是否会扭曲由此产生的概率?

c++ algorithm shuffle probability permutation

11
推荐指数
1
解决办法
2065
查看次数

查找给定数组的排列的(词典)索引.

给定一个数组说"bca",我需要找到排列数量大于给定排列的排列数.

因此,在该示例中,cab,cba是更大的排列.因此答案是2.

我尝试通过查找数组的词典排名来解决问题,但我无法为说法设计一个有效的算法.

任何帮助/指针在正确的方向是值得赞赏的!

arrays algorithm permutation

11
推荐指数
2
解决办法
6853
查看次数

如何使用next_permutation

我正在尝试安排tic tac toe board.所以我有以下代码:

// 5 turns for x if x goes first
std::string moves = "xxxxxoooo";

do {
    std::cout << moves << std::endl;
} while ( std::next_permutation(moves.begin(), moves.end()) );
Run Code Online (Sandbox Code Playgroud)

但它只输出一次原始字符串.我假设每个角色都必须是唯一的.我能做到这一点的方式是什么?

c++ permutation

11
推荐指数
1
解决办法
2万
查看次数

Python - 获取列表的所有组合

我知道我可以使用itertools.permutation来获得大小为r的所有排列.但是,对于itertools.permutation([1,2,3,4],3)它将返回(1,2,3)以及(1,3,2).

  1. 我想过滤那些重复(即获得组合)

  2. 是否有一种简单的方法来获得所有排列(所有长度)?

  3. 如何将itertools.permutation()结果转换为常规列表?

python combinations list permutation python-itertools

11
推荐指数
2
解决办法
2万
查看次数

在640 x 360维度生成所有可能的黑白像素图像的算法?

我的编程经验非常少.

我想编写一个程序,生成并保存为gif图像的每个可能的图像,只能使用640 x 360像素尺寸的黑白像素.

换句话说,每个像素可以是黑色或白色.640 x 360 = 230,400像素.所以我相信总共可以生成460,800张图像(黑色/白色为230,400 x 2).

我想要一个程序自动执行此操作.

请帮忙!

algorithm image permutation matrix

11
推荐指数
3
解决办法
2145
查看次数

生成n个箱中k球的所有可能结果(多项式/分类结果的总和)

假设我们有n投掷k球的垃圾箱.什么是快速(即使用numpy/scipy而不是python代码)方式来生成所有可能的结果作为矩阵?

例如,如果n = 4k = 3,我们需要以下内容numpy.array:

3 0 0 0
2 1 0 0
2 0 1 0
2 0 0 1
1 2 0 0
1 1 1 0
1 1 0 1
1 0 2 0
1 0 1 1
1 0 0 2
0 3 0 0
0 2 1 0
0 2 0 1
0 1 2 0
0 1 1 1
0 1 …
Run Code Online (Sandbox Code Playgroud)

python numpy permutation combinatorics scipy

11
推荐指数
1
解决办法
1083
查看次数