gpt4 book ai didi

c++ - 在字符数组上使用 next_permutation

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:10 25 4
gpt4 key购买 nike

我在对空终止字符数组使用 next_permutation 时遇到问题。当我在 do while 语句中登录时,它只给我开始的 charArray 的第一个字符,而不是给我所有可能排列的第一个字符。这是代码:

void generatePermutations(int no_ones, int length){

char charArray[length+1];

for(int i = 0; i < length; i++){
if(no_ones > 0){
charArray[i] = '1';
no_ones--;
}else{
charArray[i] = '0';
}
}
charArray[length] = '\0';

do {
std::cout << charArray[0] << std::endl;
} while ( std::next_permutation(charArray, (charArray + length)));

}

最佳答案

如果您想使用规范的 do ... while(std::next_permutation) 循环访问所有排列,您需要初始化您的数组,使其按排序顺序排列。这样做的原因是 std::next_permutation 算法计算当前排列之后按字典顺序排列的下一个排列。在您的例子中,您已经开始以反向 排序顺序排列数组,因此算法将在第一次运行时返回 false。

您可以更改代码以初始化数组,也可以保留它并预先添加对 std::reverse 的调用。

关于c++ - 在字符数组上使用 next_permutation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com