全排列的递归算法!

    xiaoxiao2021-03-25  101

    程序:

    #include <iostream> #include <string> #include <iomanip> using namespace std; template <class T> void perm(T list[], int k, int m) {//产生list[k:m]的所有排列 if (k==m) {//单元素排列 for (int i=0; i<=m; i++) cout << ' '<< list[i]; cout << endl; } else {//多元素序列,递归产生排列 for (int i=k; i<=m; i++) { swap(list[k],list[i]); perm(list,k+1,m); swap(list[k],list[i]);//恢复原来的次序为下一次排序做准备 } } } int main() { string list[10] = { "x0","x1","x2","x3"}; perm(list,0,3); }心得:

    学会运用递归算法将大型问题小型化,一个个简单的来解决!!

    转载请注明原文地址: https://ju.6miu.com/read-25849.html

    最新回复(0)