简单排列,无需重复

时间:2019-05-30 16:03:05

标签: c

通常,在解决Internet上的预制问题时,我发现自己处于一种需要以两个循环进行置换但不能重复的情况,因为通常会有两个具有乘积性质的乘积。 我想获得最简单的方法:

for (int i = 0; i <= 2; i++) {
    for (int j = 0; j <= 2; j++) {
        printf("%d %d\n",i ,j);
    }
}

输出:

0 0,
0 1,
1 0,
1 1,
1 2,
2 0,
2 1,
2 2,

没有重复,所以像这样:

0 0,
0 1,
1 1,
1 2,
2 0,
2 2.

1 个答案:

答案 0 :(得分:-1)

鉴于 i j 都增加到了相同的最大数字,您可以通过以下操作来摆脱:

for (int i = 0; i <= 2; i++) {
    for (int j = 0; j <= 2; j++) {
        if (j >= i) {
            printf("%d %d\n",i ,j);
        }
    }
}

如果 j 小于 i ,则意味着已经打印了相同的 i 值,并且都打印了两个变量。