C语言测试输入:5 3 (n=5,r=3;,表示从1,2,3,4,5自然数中选择 3 个数) 预期输出: 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5
时间: 2024-01-09 15:05:37 浏览: 130
C语言实验-有3个整数a,b,c,由键盘输入,输出其中最大的数(或最小的数)。
这道题目实际上是求从1~n中选择r个数的所有组合方式。可以用回溯的方法实现。
以下是C语言的代码实现:
```c
#include <stdio.h>
#define N 10
int res[N]; // 存放每个组合的元素
int n, r; // n表示总共有n个元素,r表示选择r个元素
int count = 0; // 记录组合的总数
void dfs(int k, int start) {
if (k == r) { // 如果已经选出了r个元素,输出
for (int i = 0; i < r; i++) {
printf("%d ", res[i]);
}
printf("\n");
count++;
return;
}
for (int i = start; i <= n; i++) {
res[k] = i;
dfs(k + 1, i + 1);
}
}
int main() {
scanf("%d %d", &n, &r);
dfs(0, 1);
printf("Total: %d\n", count);
return 0;
}
```
输入5和3后,输出的结果为:
```
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
Total: 10
```
其中,“Total”表示组合的总数。
阅读全文