劍指offer第28題擴充套件題

2021-06-21 12:59:20 字數 835 閱讀 9261

輸入乙個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a、b、c、ab、ac、bc、abc。

總的思路類似前面幾篇部落格裡寫的,不過前面的部落格裡面ab,ba算不一樣的,這裡其實就是3選1,3選2,3選3,那現在就考慮n選m怎麼取。

假設有n個元素,要選m個,總共的排列數為f(n,m),從第乙個字元開始掃瞄,每個字元有兩種情況,要麼被選中,要麼不被選中,如果被選中,遞迴求解f(n-1, m-1)。如果未被選中,遞迴求解f(n-1, m)。不管哪種方式,n的值都會減少,遞迴的終止條件n=0或m=0。

#include#include#includeusing namespace std;   

void combination(char *string ,int number,vector&result);

void combination(char *string)

void combination(char *string ,int number , vector&result)

if(*string == '\0')

return ;

result.push_back(*string); //當前元素放在排列裡面

combination(string + 1 , number - 1 , result);

result.pop_back(); //當前元素不放到排列裡面

combination(string + 1 , number , result);

}

int main(void)

《劍指offer》第28題 全排列問題及擴充套件

題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a b c所能排列出來的所有字串abc acb bac bca cab cba。題目1 輸入乙個含有8個陣列的陣列,判斷有沒有可能把這8個數字分別放到正方體的8個定點上,使得正方體上三組相對的面上的4個頂點的和都相等...

劍指offer 第15 16題

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。coding utf 8 classsolution defnumberof1 self,n write code here count 0 ifn 0 n n 0xffffffff whilen count 1 n n 1 n re...

劍指Offer 第1題

問題 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力法 分析 直接遍歷一遍陣列,即可判斷目標target是否存在。複雜度分析 時間複雜度 o n 2 因...