整数分解为若干项之和.c 507 B

12345678910111213141516171819202122232425
  1. #include<stdio.h>
  2. void find_partitions(int n, int start, int* path, int len) {
  3. int i;
  4. if (n == 0) {
  5. printf("7=");
  6. for (i = 0; i < len - 1; i++) {
  7. printf("%d+", path[i]);
  8. }
  9. printf("%d\n", path[len - 1]);
  10. return;
  11. }
  12. for (i = start; i <= n; i++) {
  13. path[len] = i;
  14. find_partitions(n - i, i, path, len + 1);
  15. }
  16. }
  17. int main() {
  18. int n;
  19. scanf("%d", &n);
  20. int path[30];
  21. find_partitions(n, 1, path, 0);
  22. return 0;
  23. }