天天基金网162607,刘天宝,草榴社区新址谷歌搜索
给定一个整数,输出这个整数所有的可能加和,按从小到大排序
例:给定整数7
输出:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <windows.h> 5 6 void myprint(int *arr, int n) 7 { 8 int i; 9 for (i = 0; i< n-1; i++) { 10 printf("%d+", arr[i]); 11 } 12 printf("%d\r\n", arr[n-1]); 13 14 return; 15 } 16 17 void test(int n) 18 { 19 int * arr = malloc(sizeof(int) * n); 20 int i; 21 for (i = 0; i< n; i++) { 22 arr[i] = 1; 23 } 24 myprint(arr, n); 25 26 int middle, sum, first; 27 while (n > 1) { 28 sum = arr[n-1] + arr[n-2]; 29 middle = sum / 2; 30 31 for (first = 2; first<=middle; first++){ 32 arr[n-2] = first; 33 arr[n-1] = sum- first; 34 myprint(arr, n); 35 } 36 n--; 37 arr[n-1] = sum; 38 myprint(arr, n); 39 } 40 free(arr); 41 } 42 43 int main() 44 { 45 int n; 46 while(scanf("%d", &n) != eof) { 47 test(n); 48 printf("-------------------\r\n"); 49 } 50 return 0; 51 }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论