全排列的實現

2021-09-06 06:38:52 字數 1516 閱讀 9466

程式設計思路如下(擷取自《erlang程式設計》3.8):

除錯的**:

#include #include 

#include

using

namespace

std;

void insert(string &str,char ch, vector&aa)

}void fun(string array, vector&a)

string array2 = array.substr(1,n-1

);//

cout << "array2=" << array2aa;

char ch = array[0

]; fun(array2,a);

//cout << "a.size()=" << a.size() << endl;

n =a.size();

for (int i=0; i)

a.resize(aa.size());

copy(aa.begin(),aa.end(),a.begin());

}int main(int argc, char *argv)

cout

<

退出請輸入:exit

"<

cout

<< "

請輸入待排列的序列(如:abc):";

cin>>str;

}system(

"pause");

return

exit_success;

}

正式**:

#include #include 

#include

using

namespace

std;

void insert(string &str,char ch, vector&aa)

}void fun(string array, vector&a)

string array2 = array.substr(1,n-1

); vector

aa;char ch = array[0

]; fun(array2,a);

n =a.size();

for (int i=0; i)

a.resize(aa.size());

copy(aa.begin(),aa.end(),a.begin());

}int main(int argc, char *argv)

cout

<

退出請輸入:exit

"<

cout

<< "

請輸入待排列的序列(如:abc):";

cin>>str;

}system(

"pause");

return

exit_success;

}

全排列的實現

在c 的模板中,有一對專門用於實現數字或字元全排列的模板 next permutation biter,biter 和prev permutation biter,biter 前者實現向後排列,後者實現向前排列,即前者在原順序上依次產生較大的排列,後者則相反。舉個例子 假設需要產生以 354 為基礎...

全排列實現

參考的是 演算法競賽入門 p185 方法是用乙個額外的陣列a,不斷放入物件到這個陣列中,直到n個為止。include using namespace std int total 0 void permutation char s,char a,int n,int cur total cout end...

STL中的全排列函式實現全排列

標頭檔案 inlcude這裡先說兩個概念 下乙個排列組合 和 上乙個排列組合 對序列 每乙個元素都比後面的小,按照字典序列,固定a之後,a比bc都小,c比b大,它的下乙個序列即為,而的上乙個序列即為,同理可以推出所有的六個序列為 其中沒有上乙個元素,沒有下乙個元素。a.函式模板 next permu...