gpt4 book ai didi

c - 编写仅使用循环来计算可能组合的代码

转载 作者:行者123 更新时间:2023-11-30 20:33:56 24 4
gpt4 key购买 nike

我需要一些有关我正在编写的代码的帮助。我需要编写一个循环来计算我在程序中输入的数字的组合数量,并且需要检查我可以用数字 10,5,2,1 进行多少种组合。

例如,如果我输入 5,则有 4 种组合 - (5 | 2 2 1| 2 1 1 1 | 11111)。

我尝试过一些循环,但我不知道如何使其工作,我正在考虑使用 while 循环,但我不知道如何计算组合,非常感谢任何有关此事的帮助.

这是我到目前为止的代码

#include <stdio.h>

void main()
{
printf("enter a number\n");
int num, i, m = 2, counter = 0, g = 2;
scanf_s("%d", &num);

for (i = 1; m > 1 ; i++)
{
m = num - (5 * i);
for (i = 1; g > 1; i++)
{
counter++;
g= m - (2 * i);
}
}

printf("The counter is %d\n", counter);
}

我的总体想法是从底层开始。例如,如果我输入10,我得到 10 -2 ,然后计数器计数 1,然后从 8 (10-2) 计数另一个 -2,它再次计数,当我输入更高的数字(如 5)时,我想要一个循环来删除10 - 5 = 5,然后进入下一个循环并数 5 2 2 1,依此类推...

非常感谢您的帮助,谢谢!

最佳答案

这是您可以使用的策略。

假设输入为N

首先你可以说:“如果我一次使用 10 种组合,有多少种组合?”

那就是:

combinations = calculate_combinations_when_only_using_5_2_1(N-10);

然后你可以说:“如果我恰好使用 10 次两次,有多少种组合?”

那就是:

combinations = calculate_combinations_when_only_using_5_2_1(N-20);

下次您使用 10 时正好 3 次,依此类推。

这可以变成:

int calculate_combinations_which_includes_10(int N)
{
int result = 0;
while(N >= 10)
{
result += calculate_combinations_when_only_using_5_2_1(N-10);
N = N - 10;
}
return result;
}

使用类似的方法,您可以编写一个返回包含 5 的组合数量的函数,以及另一个返回包含 2 的组合数量的函数。请记住:

int calculate_combinations_which_includes_1(int N)
{
return 1; // Always exactly 1 combination in this case
}

现在您只需要 calculate_combinations_when_only_using_5_2_1calculate_combinations_when_only_using_2_1 ,我将留给您解决。

关于c - 编写仅使用循环来计算可能组合的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43620303/

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