數字全組合 遞迴法,回朔法

2021-04-21 09:51:55 字數 984 閱讀 4884

1.遞迴法

void comb(int number, int count, int *parray)

else

} }

int main()

// 建立動態陣列

parray = malloc(sizeof(int) * (count + 1));

if(!parray)

parray[0] = count;

comb(number, count, parray);

free(parray);

parray = null;

return 0; }

程式執行如下:

please input number:5

please input count:3

5 4 3

5 4 2

5 4 1

5 3 2

5 3 1

5 2 1

4 3 2

4 3 1

4 2 1

3 2 1

2.回朔法

void comb(int number, int count)

if(number - count + i >= a[i])

else

} }

int main()

comb(number, count);

return 0; }

程式執行如下:

please input number:5

please input count:3

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

2 3 4

2 3 5

2 4 5

3 4 5

回朔法 數字組合問題

輸入兩個整數n和m,從數列1,2,3 n中隨意取幾個數,使其和等於m,要求列出所有的組合。法一 搜尋整個二叉樹 static int sum 10 static int x 訪問標記 public static void main string args x new int a.length for...

遞迴學習 組合 全組合排列

sample input 1 2 3 sample output include using namespace std const int len 10 int n int mat len int result len bool used len 初始值為false,表示都沒有使用過 void s...

全組合的遞迴實現C

今天刷題碰到乙個要用到全組合的問題,下面的 是用遞迴寫的,留著以後複習一下 includeusing namespace std void full combine int data,int cur,int len if cur len for int i 0 i這是一種間接的方式,程式輸出的都是0...