加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 从数字中获取所有组合而不重复

发布时间:2020-12-16 09:31:43 所属栏目:百科 来源:网络整理
导读:嗨 我使用c,我可以找到一个简单的方法从一组包含所有可能组合的数字中获取数组 例如:{1,2,3} { {3,1,2},{1,3},{3,1},3,{2,1} }; 问题是如果我得到5个或更多数字如何使120组合 解决方法 这些是排列,而不是组合. 您可以使用 std::next_permutation 来计算序列

我使用c,我可以找到一个简单的方法从一组包含所有可能组合的数字中获取数组
例如:{1,2,3}

{ {3,1,2},{1,3},{3,1},3,{2,1}
  };

问题是如果我得到5个或更多数字如何使120组合

解决方法

这些是排列,而不是组合.

您可以使用std::next_permutation来计算序列的所有排列.它看起来像这样:

std::array<int,3> data = { 1,3 };
do {
    // use current permutation
} while (std::next_permutation(data.begin(),data.end()));

(我在本例中使用了C 0x中的std :: array;你也可以在C TR1和Boost中找到数组容器.这个算法也适用于任何可双向迭代的容器,比如std :: vector.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读