全排列問題

2021-07-23 06:42:29 字數 742 閱讀 9365

一:全排列問題演算法描述如下:

舉例: 345的全排列分別為 345 354    435 453    534  543, 可見將整組數中的所有的數分別與第乙個數交換,這樣就總是在處理後n-1個數的全排列。

又舉例:45的全排列有 45 54 可見將第乙個數分別與後面的數交換後輸出即為45的全排列。

所以,對於乙個很長一幫子的數,如123412414132,我們需要將1與後面所有的數交換輸出,它又包含乙個字問題即將2與後面所有的數交換輸出,又包含3,4....,

知道3,2交換並輸出,這是乙個遞迴的過程,3,2交換輸出完成後,就開始回退出棧。

這一系列過程相當於把乙個大問題劃分成好多小問題 。

二:**如下:

#include #include using namespace std;

template void full_permutation(t list, int cur, int end) //cur和end都是下標值

{ if(cur == end){

for(int i=0; i<=end; ++i)

cout結果如下:

全排列問題

題目描述814 全排列問題 鍵盤輸入n 1 n 10 個字元,輸出輸出其全排序。第一行為字元個數k,第二行為k個字元,不用空格隔開。輸出其每種排列佔一行,各字元間用一空格隔開。樣例輸入 3abc 樣例輸出 a b c a c b b a c b c a c b a c a b includeint ...

全排列問題

全排列就是從第乙個數字起 每個數分別與它後面的數字交換 用c 寫乙個函式,如 foo const char str 列印出 str 的全排列,如 abc 的全排列 abc,acb,bca,dac,cab,cba。第一種方法 用遞迴 不包含有重複數字或字元出現的情況 void swap char a,...

全排列問題

time limit 10000 ms memory limit 65536 kib submit statistic discuss problem description 從n個不同元素任取m m n 個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的乙個排列,當m n時所有的排...