字串全排列

2021-07-08 11:09:42 字數 543 閱讀 9633

《本演算法採用固定位置的方法,遞迴; 

把a固定在第一位,然後再求後面的排列;

把b固定,

把c固定,

把。。。。固定;到最後乙個字元時,輸出,然後恢復初始字串,交換下一位;

還有一種情況是字串中出現重複字元,加乙個判斷函式ifswap();如果與當初i相同的元素已經參與過交換,那麼就不再交換了;

#include
#include/*

*/void swap(char *str,int a,int b) // 交換函式,用於讓不同的字元到達第一位

//去重全排列

bool ifswap(char *str,int begin,int end) //從begin到end的區間內是否有元素與end重合,如果有,就不交換,否則,就交換

{ int i;

for(i=begin;i

tips:

1,swap的時候單純傳遞兩個陣列元素進去是沒辦法完成物理上的交換,必須傳遞陣列或者陣列指標;

遞迴 字串全排列 全排列

在高中階段我們已經通過大量的習題了解了排列和組合。但是有時候我們研究的不是由排列和組合算出來的數字,研究的是生成排列和組合。即,把集合中元素所有的排列和組合全部列出來,然後研究這些序列的性質。今天我用兩種方法講一下如何生成排列。注意我們這裡涉及的順序都是序列的字典序。序列的字典序 設有兩個序列,第乙...

字串全排列

依次選出每乙個字元元素,作為排列的第乙個元素,然後對剩餘的元素進行全排列,如此遞迴處理,從而得到所有元素的全排列。以對字串abc進行全排列為例,我們可以這麼做 固定a,求後面bc的排列 abc,acb,求好後,a和b交換,得到bac 固定b,求後面ac的排列 bac,bca,求好後,c放到第一位置,...

字串全排列

如果沒有重複字元 include using namespace std void swap char char void permutation char char int main void swap char a,char b str 整個串 pbegin 後面的字串拉到前面的起始位置 voi...