查找所有3位数字的可用组合

时间:2018-09-20 12:42:52

标签: c algorithm

请帮助我了解如何检查我的电话号码是否相同,但顺序不同。

void ft_print_comb(void)
{    
    int hun;
    int doz;
    int uni;

    hun = 0;
    doz = 1;
    uni = 2;

    solver(hun, doz, uni);
}
void print( char f, char se, char thi)
{
    ft_putchar(f);
    ft_putchar(se);
    ft_putchar(thi);
    ft_putchar(',');
}
void solver(int x, int y, int z)
{
    while (x < 9){    
        while (y<8){    
            while (z<7){    
                if (x < y && y < z ){
                    print(x, y, z);
                }
                z++;
            }
            y++;
        }
        x++;
    }
}

创建一个函数来显示三个不同数字的所有不同组合 升序,按升序列出-是的,重复是自愿的。

012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 789

987不存在,因为已经有789。 999不存在,因为数字9多次出现。

1 个答案:

答案 0 :(得分:2)

最简单的方法是确保您永远不要构造这样的重复数字。这是一个示例:

int main(void){
    int i, j, k;
    for (i = 0; i <= 9; i++) {
        for (j = i+1; j <= 9; j++) {
            for (k = j+1; k <= 9; k++) {
                printf("%d%d%d\n", i, j, k);
            }
        }
    }
}

在上面的示例中,您将以相同的顺序拥有所有非重复数字的可能组合。它将始终保证i

您可能还会找到其他方式。