用c语言对一个大于1的自然数n进行拆分,输出所有拆分情况,按字典序排列
时间: 2024-04-29 08:22:41 浏览: 107
1~N的n个数按大小顺序的全排列的c程序
以下是一个用递归实现的代码,可以输出所有拆分情况,并按照字典序排列:
```c
#include <stdio.h>
void partition(int n, int max, int* arr, int len) {
if (n == 0) { // 如果n拆分完成,输出结果
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return;
}
for (int i = 1; i <= max && i <= n; i++) { // 枚举当前拆分的数
arr[len] = i;
partition(n - i, i, arr, len + 1);
}
}
int main() {
int n;
printf("请输入一个大于1的自然数n:");
scanf("%d", &n);
int arr[100]; // 用来存储拆分结果的数组
partition(n, n, arr, 0);
return 0;
}
```
例如,输入n=4,输出结果如下:
```
1 1 1 1
1 1 2
1 3
2 2
4
```
阅读全文