使用c++实现 求 m个球放到n个盒子 的所有结果组合
时间: 2023-05-18 13:06:53 浏览: 115
以下是使用 C 语言实现求 m 个球放到 n 个盒子的所有结果组合的代码:
```c
#include <stdio.h>
void print_combinations(int m, int n, int arr[], int index) {
if (index == n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
}
for (int i = 0; i <= m; i++) {
arr[index] = i;
print_combinations(m - i, n, arr, index + 1);
}
}
int main() {
int m = 3, n = 2;
int arr[n];
print_combinations(m, n, arr, 0);
return 0;
}
```
这段代码使用递归的方式实现了求 m 个球放到 n 个盒子的所有结果组合的功能。其中,m 表示球的数量,n 表示盒子的数量,arr 数组用于存储每个盒子中球的数量,index 表示当前处理的盒子的下标。在递归过程中,每次将一个球放到当前处理的盒子中,然后递归处理下一个盒子,直到处理完所有的盒子为止。最后,将每个盒子中球的数量输出即可。
注意:这段代码中没有对输入进行任何检查,如果输入的 m 或 n 不合法,可能会导致程序崩溃。在实际使用中,应该对输入进行合法性检查。
阅读全文