这是一个代码示例,该代码示例无需重复即可生成所有可能的2组合:
int datanum = 4;
for (int arg = 0; arg < datanum*datanum; arg++)
{
int j = arg % datanum;
int i = arg / datanum;
if (i < j)
{
std::cout << "i=" << i << " j=" << j << std::endl;
}
}
输出:
i=0 j=1
i=0 j=2
i=0 j=3
i=1 j=2
i=1 j=3
i=2 j=3
我的问题是:如何通过仅使用一个循环来生成2组合而不会重复,其中迭代次数应等于2组合的数量(在N = 4的情况下应为6而不是4 * 4 = 16就像我当前的解决方案一样)?
答案 0 :(得分:3)
这如何:
int datanum = 4;
int i = 0;
int j = 1;
while (i < datanum-1) {
{
std::cout << "i=" << i << " j=" << j << std::endl;
j++
if (j == datanum) {
i++;
j = i + 1;
}
}