Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中摸索多个独占组合时遇到困难+;_C++_Combinations_Data Partitioning - Fatal编程技术网

C++ 在C+中摸索多个独占组合时遇到困难+;

C++ 在C+中摸索多个独占组合时遇到困难+;,c++,combinations,data-partitioning,C++,Combinations,Data Partitioning,我有一个有序字符串,需要向用户显示: ABCCDDCBBBCBBDDBCAAA 用“B”表示的对象被标记,这样2个B后面将有一个“~” AB~CCDDCB~BBCBBDDBCAAA AB~CCDDCBB~BCBBDDBCAAA AB~CCDDCBBB~CBBDDBCAAA and so on... 我使用了Howard Hinnant的方法,它适用于这个简单的案例。我的测试代码使用一个位置向量作为int,它是为每个组合发送的 然而,当我有多个B标签时,我不知道该怎么办 例如,总共需要标记4b

我有一个有序字符串,需要向用户显示:

ABCCDDCBBBCBBDDBCAAA
用“B”表示的对象被标记,这样2个B后面将有一个“~”

AB~CCDDCB~BBCBBDDBCAAA
AB~CCDDCBB~BCBBDDBCAAA
AB~CCDDCBBB~CBBDDBCAAA
and so on...
我使用了Howard Hinnant的方法,它适用于这个简单的案例。我的测试代码使用一个位置向量作为int,它是为每个组合发送的

然而,当我有多个B标签时,我不知道该怎么办

例如,总共需要标记4b,2个由“~”标记,2个由“#”标记

我写的伪代码是级联的。在第一个for_每个组合之后,对于每个结果组合,将每个其他位置复制到另一个向量,并对每个组合执行另一个for_


考虑到我将要使用的组合的数量,我希望有更好的方法。

这听起来像是家庭作业,所以首先我不会只给你代码,其次我添加了[家庭作业]标签

现在,要放置四个标记,合理的解决方案是一组嵌套的for循环,其中四个

标记被限制在7个位置,因此只需从0到6(包括)进行计数

然后将其转换为字符串中的位置

然后输出带有标记的字符串

我已经证实这很容易做到


如果您需要进一步的帮助,只需问一个新问题(并展示您到目前为止的成果)

这听起来像是家庭作业,所以首先我不打算只给您代码,其次我添加了[家庭作业]标签

现在,要放置四个标记,合理的解决方案是一组嵌套的for循环,其中四个

标记被限制在7个位置,因此只需从0到6(包括)进行计数

然后将其转换为字符串中的位置

然后输出带有标记的字符串

我已经证实这很容易做到


如果您需要进一步的帮助,只需问一个新问题(并展示您迄今为止所掌握的知识)

我相信我在看了一眼之后已经回答了自己的问题

首先,我从霍华德图书馆转到了赫维图书馆。主要的优点是使用next_组合可以将组合计算链接在一起,如下所示:

do {
    do {
    cout << values << endl;
    } while (next_combination(values.begin() + 3, values.begin() + 5, values.end()));
} while (next_combination(values.begin(), values.begin() + 3, values.end()));
do{
做{

看了一会儿,我相信我已经回答了自己的问题

首先,我从使用Howard的库切换到Hervé的库。主要的优点是使用next_组合可以将组合计算链接在一起,如下所示:

do {
    do {
    cout << values << endl;
    } while (next_combination(values.begin() + 3, values.begin() + 5, values.end()));
} while (next_combination(values.begin(), values.begin() + 3, values.end()));
do{
做{

cout你好!信不信由你,这不是家庭作业,而是工作!而且,我想我已经找到了一个合理的解决方案。我在下面详细介绍了它。你好!信不信由你,这不是家庭作业,而是工作!而且,我想我已经找到了一个合理的解决方案。我在下面详细介绍了它。