相关疑难解决方法(0)

如何创建矢量矢量的笛卡尔积?

我有一个矢量说vector<vector<int> > items不同大小的矢量,如下所示

1,2,3
4,5
6,7,8
Run Code Online (Sandbox Code Playgroud)

我想根据这些向量的笛卡尔积来创建组合

1,4,6
1,4,7
1,4,8
and so on till
3,5,8
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?我查了几个链接,我也在这篇文章的末尾列出了它们,但我无法解释它,因为我不熟悉这种语言.有些人可以帮助我.

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

int main()
{
    vector<vector<int> > items;
    int k = 0;

    for ( int i = 0; i < 5; i++ ) {
        items.push_back ( vector<int>() );

        for ( int j = 0; j < 5; j++ )
            items[i].push_back ( k++ );
    }

    cartesian ( items ); // I want some function here …
Run Code Online (Sandbox Code Playgroud)

c++ combinations vector cartesian-product

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

如何迭代计算笛卡尔积?

这个问题询问如何计算给定数量向量的笛卡尔乘积.由于向量的数量是预先知道的并且相当小,因此使用嵌套的for循环很容易获得解决方案.

现在假设您以您选择的语言给出了向量(或列表列表或集合等)的向量:

l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
Run Code Online (Sandbox Code Playgroud)

如果我被要求计算其笛卡尔积,那就是

[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
Run Code Online (Sandbox Code Playgroud)

我会继续递归.例如,在快速和肮脏的python中,

def cartesianProduct(aListOfLists):
    if not aListOfLists:
        yield []
    else:
        for item in aListOfLists[0]:
            for product in cartesianProduct(aListOfLists[1:]):
                yield [item] + product
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法可以迭代计算它吗?

(注意:答案不需要在python中,无论如何我都知道在python中,itertools可以更好地完成工作,就像在这个问题中一样.)

language-agnostic iteration algorithm cartesian-product

10
推荐指数
1
解决办法
6100
查看次数

C ++中的笛卡尔积

我一直在寻找关于如何提出可以应用笛卡尔积的代码段的数周时间。假设我有两个数组:

int M[2]= {1,2};
int J[3] = {0,1,2};
Run Code Online (Sandbox Code Playgroud)

所以代码将采用这两个数组应用规则 MXJ 因此我们将有 (1,0)(1,1)(1,2)(2,0)(2,1)(2,2) 和我希望将新结果保存到一个新数组中,其中数组中的每个索引都包含一个 pair ,例如 c[0] = (1,0)。请帮忙 :(

c++ cartesian-product

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

打印所有字符串,O(2 ^ n)算法

假设有n个级别,在每个级别中你可以选择两个可能的字符中的一个,打印所有可能的字符串,
例如: -
假设我们有3个级别: -
level1: - ab
level2: - cd
level3: - ef

可能的字符串是: - 1. ace
2. acf
3. ade
4. adf
5. bce
6. bcf
7. bde
8. bdf

我知道样本空间是2 ^ n所以所需的时间是O(2 ^ n),但我无法弄清楚如何编写它.有什么可能的方法和我必须阅读哪些主题来解决这些问题?

c++ algorithm

0
推荐指数
1
解决办法
197
查看次数