除了需要两点帮助之外,我的代码几乎完成了。这是我的代码:Code。对于下面的函数,我正在尝试使其能够使用“n”输入来初始化数组myBits而不是常量(当前为5)。
我的其他问题就在下面。我正在尝试将所有正确的位都切换为“true”。我在“/ * ..... * /”中编写了for循环,但似乎无法正常工作。就在它上面,我对C(5,4)....(myBit [0] = myBit [1] .... etc ......(...我正在用它来找到r-字符串的组合)...似乎有效,任何帮助将不胜感激!
void nCombination(const vector<string> &Vect, int n, int r){
bool myBits[5] = { false }; // everything is false now
myBits[1] = myBits[2] = myBits[3] = myBits[4] = true;
/* for(int b = n - r - 1; b = n - 1; b++){
myBits[b] = true; // I am trying to set the r rightmost bits to true
}
*/
do // start combination generator
{
printVector(Vect, myBits, n);
} while (next_permutation(myBits, myBits + n)); // change the bit pattern
}
最佳答案
这些称为可变长度数组(简称VLA),它们不是标准C++的功能。这是因为我们已经有了可以更改其长度的数组:std::vector
。使用它而不是数组,它将起作用。
关于c++ - 初始化大小可变的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27304694/