【发布时间】:2016-01-31 02:56:11
【问题描述】:
在以空字符结尾的字符数组上使用 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)));
}
【问题讨论】:
-
您只打印循环中数组的第一个字符。这是故意的吗?
-
是的,我这样做是为了测试它是否有效。问题是它没有打印出任何其他排列。