整数、整数出力を与え、小から大順に、すべての可能な添加
例:指定された整数7
出力:
1 + 1 + 1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 2
1 + 1 + 1 + 1 + 3
1 + 1 + 1 + 2 + 2
1 + 1 + 1 + 4
1 + 1 + 2 + 3
1 + 1 + 5
1 + 2 + 4
1 + 3 + 3
1 + 6
2 + 5
3 + 4
7
実現:
1の#include <stdio.hの> 2の#include <STDLIB.H> 3の#include < 文字列・H> 4の#include <WINDOWS.H> 5 6 空隙 MyPrint(INT * ARR、INT N) 7 { 8 INT I。 9 ための式(I = 0、I <N- 1 ; I ++ ){ 10 のprintfは(" %のD + " 、ARR [I])。 11 } 12 のprintf(" %D \ R \ n "、ARR [N- 1 ])。 13 14 リターン。 15 } 16 17 ボイド試験(int型N) 18 { 19 INT * ARR = malloc関数(はsizeof(INT)* N)。 20 INT I; 21 のために(私は= 0、I <N; I ++ ){ 22 ARR [I] = 1 。 23 } 24 MyPrint(ARR、N)。 25 26 INTの最初の中間和、。 27 一方、(N> 1){ 28 合計= ARR [N- 1 ] + ARR [N- 2 ]。 29 中央=和/ 2 。 30 31 のために(第一= 2 ;最初の<=中間、最初++ ){ 32 ARR [N- 2 ] = 最初; 33 ARR [N- 1 ] = sum- 最初; 34 MyPrint(ARR、N)。 35 } 36 N-- 。 37 ARR [N- 1 ] = 和; 38 MyPrint(ARR、N)。 39 } 40 フリー(ARR)。 41 } 42 43 のint main()の 44 { 45 INT N。 46 一方(scanf関数(" %のD "、&N)=!{EOF) 47 試験(N) 48 のprintf(" ------------------- \ R \ n " ); 49 } 50 リターン 0 。 51 }