乙個簡單的字元組合演算法

2021-08-31 15:08:41 字數 890 閱讀 8446

有個朋友問了我這個問題:

把幾個陣列裡面的元素任意組合 並輸出所有組合。c++中是有相關的函式,我們自己來實現一下吧。

當然大家一開始就會想到用遞迴,下面就給出簡單的原始碼。

#include using namespace std;

char arr[100][100];

void work(int row, int col, char* str);

int main()

arr[i][j] = '\0';

} arr[i][0] = '\0'; //把最後一行標記為\0

//開始處理

str = (char*)malloc((n+1)*sizeof(char));

work(0,0,str); //從0行0列開始處理

cin>>n; //沒多大用處,就是讓程式停一下,看一下結果

return 0;

}void work(int row, int col, char* str)

{ //函式中要訪問的是row行的col列

if(arr[row][0] == '\0') //到最後一行了,可以輸出了

{ str[row] = '\0';

cout3  //表示下面有三行,每行都不為空

3 a c t      //第一行,開關數字表示後面有幾個字元

5 b e s 4 *  //第二行,開關數字表示後面有幾個字元

4 3 - a #    //第三行,開關數字表示後面有幾個字元

2 a b

2 1 2

3 3 a c t  

5 b e s 4 *  

4 3 - a #

//思路:

//從第一行往下走,每走一步輸出乙個字元,走到\0行時,輸出換行

JAVA組合演算法的乙個實現

描述 乙個陣列或集合物件,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的所有 1 全部移動到陣列的最左端...

乙個排列組合演算法 裂變演算法

2009年1月15日 瀋陽 晴 為解決1月7日遇到的排列組合的難題,進行了以下題目的研究,並用c 實現了乙個非遞迴的演算法。有乙個list,list中存有n個物件,要求做出這n個物件所有無序組。數學公式 組合數 c n,1 c n,2 c n,n c 的演算法實現 一 組合生成器 二 測試程式 三 ...

字串的全排列和組合演算法

今天研究了下字串的全排列和組合問題。來自 劍指offer 面試題28 字串的排列 題目 輸入乙個字串,列印出該字串中字串的所有排列。正常情況可以用n重迴圈 列印出來 但是這樣 復用程度太低,要根據n寫迴圈的次數。換一種思路可以採用遞迴的思路 把整個字串的排列分成兩步,首先求雖有可能出現在第乙個位置的...