我想用C ++编写一个算法。假设我们有x = {1,2,3,4}。然后结果:
1 2 3 0
1 2 0 4
1 0 3 4
0 2 3 4
1 2 0 0
1 0 3 0
0 2 3 0
1 0 0 4
...
0 2 0 0
1 0 0 0
任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用4位数字的二进制表示。因此,您将增加此数字并将其用作应用于1 2 3 4
的掩码。我希望你不要我们为你编写所有代码。如果有什么不清楚,请随时询问。
答案 1 :(得分:0)
实际上这很简单:
std::vector<int> x;
/* set x to { 1,2,3,4 } */
std::vector<int> temp(x.size());
byte mask = 0;
for(int i = 0; i < (int)pow(2, x.size()); ++i)
{
for(int j = 0; j < x.length(); ++j)
{
mask = ; // this is the tricky part, set it to bit j of i
temp.at(j) = x.at(j) * mask;
}
}