发布
社区首页 >问答首页 >有限项的两个数组之间的排列

有限项的两个数组之间的排列
EN

Stack Overflow用户
提问于 2016-09-18 22:57:37
回答 1查看 110关注 0票数 0

假设我有两个数组/向量,如下:

代码语言:javascript
代码运行次数:0
复制
A[4]={4,6,9,7};
B[4]={12,4,9,3};

我必须从这两个数组中取两个项目,并且不会是相同的索引(如果我取A,那么我就不能取B),并且这个组合的和将是最小值。

假设,

代码语言:javascript
代码运行次数:0
复制
From A we took, A[0] and A[2]
From B we took, B[1] and B[3]

然后它会给出最小的结果:20

我如何用next_permutation解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-09-19 01:41:17

你可以使用下面的代码来迭代A和B的不相交对:

代码语言:javascript
代码运行次数:0
复制
enum E { A, B, None };

std::vector<E> es {E::A, E::A, E::B, E::B};
es.resize(a.size(), E::None); // es is sorted

do {
    std::cout << "checking:";
    int index = -1;
    for (auto e : es) {
         ++index;
         switch (e) {
             case E::A: std::cout << " A :" << index;
             case E::B: std::cout << " B :" << index;
         }
    }
    std::cout << std::endl;
} while (std::next_permutation(es.begin(), es.end()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39559030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档