用c语言dfs对一个大于一的自然数n进行拆分,拆分成若干个大于等于一的自然数之和,输出所有拆分情况,按从大到小排列
时间: 2024-05-03 19:21:27 浏览: 67
拆分自然数的几种算法.doc
```c
#include <stdio.h>
void dfs(int n, int cur, int *path, int len) {
if (n == 0) { // 拆分完毕,输出结果
for (int i = 0; i < len - 1; i++) {
printf("%d + ", path[i]);
}
printf("%d\n", path[len - 1]);
return;
}
for (int i = cur; i <= n; i++) { // 枚举下一个数
path[len] = i;
dfs(n - i, i, path, len + 1); // 递归到下一层
}
}
int main() {
int n;
scanf("%d", &n);
int path[n]; // 定义路径数组
dfs(n, 1, path, 0);
return 0;
}
```
阅读全文