用C语言采用回溯法输出自然数 1~n 中,任取 r 个数的所有组合。(问 题设定,n=5,r=3)
时间: 2024-03-15 07:44:21 浏览: 113
C语言回溯算法
5星 · 资源好评率100%
下面是用 C 语言实现的代码:
```c
#include <stdio.h>
void backtrack(int* nums, int start, int n, int r, int* cur, int len) {
if (len == r) {
for (int i = 0; i < r; i++) {
printf("%d ", cur[i]);
}
printf("\n");
return;
}
for (int i = start; i < n; i++) {
cur[len] = nums[i];
backtrack(nums, i+1, n, r, cur, len+1);
}
}
void combine(int n, int r) {
int nums[n];
for (int i = 0; i < n; i++) {
nums[i] = i+1;
}
int cur[r];
backtrack(nums, 0, n, r, cur, 0);
}
int main() {
int n = 5, r = 3;
combine(n, r);
return 0;
}
```
输出结果与前面的 C++ 代码一致。
阅读全文