整数、整数出力を与え、小から大順に、すべての可能な添加

整数、整数出力を与え、小から大順に、すべての可能な添加

例:指定された整数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関数はsizeofINT)* 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 }

 

おすすめ

転載: www.cnblogs.com/causewang/p/11939029.html