gpt4 book ai didi

c - 生成 3 位数字的所有可能组合,不重复

转载 作者:行者123 更新时间:2023-12-02 18:04:16 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来打印三位数字的所有可能组合。并且有一个限制:

  1. 三位数字必须不同
  2. 012、120、102、021、201 和 210 被视为 0、1 和 2 这三个数字的相同组合
  3. 仅打印三位数字的最小组合

预期输出如下

012, 013, 014, 015, 016, 017, 018, 019, 023, 024, 025, 026, 027, 028, 029, 034, 035, 036, 037, 038, 039, 045, 046, 047, 048, 049, 056, 057, 058, 059, 067, 068, 069, 078, 079, 089, 123, 124, 125, 126, 127, 128, 129, 134, 135, 136, 137, 138, 139, 145, 146, 147, 148, 149, 156, 157, 158, 159, 167, 168, 169, 178, 179, 189, 234, 235, 236, 237, 238, 239, 245, 246, 247, 248, 249, 256, 257, 258, 259, 267, 268, 269, 278, 279, 289, 345, 346, 347, 348, 349, 356, 357, 358, 359, 367, 368, 369, 378, 379, 389, 456, 457, 458, 459, 467, 468, 469, 478, 479, 489, 567, 568, 569, 578, 579, 589, 678, 679, 689, 789

我正在尝试用 C 语言实现,但算法或任何语言实现就足够了。

这是我到目前为止所做的,但它是不正确的。

#include <stdio.h>

/**
* main - entry point
*
* Description: display triple digits and ,
*
* Return: Always 0 (successful)
*/

int main(void)
{
int i, j, k, l;

i = 0;
while (i < 1000)
{
j = i / 100; /* hundreds */
k = (i / 10) % 10; /* tens */
l = i % 100; /* units */
if (j < k && k < l)
{
putchar(l + '0');
putchar(k + '0');
putchar(j + '0');
if (i < 789)
{
putchar(',');
putchar(' ');
}
}
i++;
}
putchar('\n');

return (0);
}

最佳答案

这是一段相当紧凑的代码片段,用于给出最小的唯一三位数。

#include <stdio.h>

int main()
{
char digit[4];

for (int i = 0; i < 8; i++)
{
for (int j = i + 1; j < 9; j++)
{
for (int k = j + 1; k < 10; k++)
{
digit[0] = i + '0';
digit[1] = j + '0';
digit[2] = k + '0';
digit[3] = '\0';
printf("%s\n", digit);
}
}
}

return 0;
}

你可以尝试一下。

关于c - 生成 3 位数字的所有可能组合,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73668536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com