c 實現全排列的三種方式

2022-10-10 00:30:15 字數 1086 閱讀 3397

#include #include #include #include using namespace std;

const int maxn = 10;

bool visit[maxn];//判斷某個元素是否被訪問過

char sequence[maxn];//存放找到的全排列

void getpermutation(string str, int index)

printf("\n");

}for (int i = 0; i < str.size(); ++i) else

}}int main()

return 0;

}

#include #include #include #include using namespace std;

//非遞迴方式

//依次給出該排列的下乙個排列

bool getnextpermutation(string &str)

// 已經是字典序最大了

if (index < 0)

for (int i = n - 1; i > index; --i)

}reverse(str.begin() + index + 1, str.end());

return true;

}int main() while (getnextpermutation(str));

cout << endl;

}return 0;

}

next_permutation()和非遞迴方式求全排列的用法一樣,是計算當前序列的下乙個序列,該函式位於algorithm標頭檔案中。

它有三個引數:

#include #include #include using namespace std;

int main() while (next_permutation(str.begin(), str.end()));

cout << endl;

}return 0;

}

全排列的三種實現

題目描述 生成由1至n個數的全排列。輸入 輸入包含多組樣例,每組樣例輸入乙個整數n 1 n 9 輸出 按照字典序反序輸出,每個數值之間用空格隔開。每個排列單獨佔一行。逆字典序 include include include int num 10 int visited 10 int n,t void...

全排列的三種寫法

給定n個不同的數,要求生成這n個數的全排列!解法1 遞迴思想,首先選定第乙個數 有n種不同的選擇方式 然後對剩下的n 1個數進行全排列 根據此步驟,對剩下n 1數的全排列進行遞迴。void permutation vector ivec,int level for int i level i ive...

總結 三種全排列演算法

1 遞迴演算法 演算法書上有詳細的解釋,複製如下 設r 是要進行排列的n個元素,ri r 集x中元素的全排列記為perm x ri perm x 表示在全排列perm x 的每乙個排列前加上字首ri得到的排列.r的全排列可歸納定義如下 當n 1時,perm r r是集合r中唯一的元素.當n 1時,p...