有個朋友問了我這個問題:
把幾個陣列裡面的元素任意組合 並輸出所有組合。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寫迴圈的次數。換一種思路可以採用遞迴的思路 把整個字串的排列分成兩步,首先求雖有可能出現在第乙個位置的...