全排列(c語言)

2021-10-01 06:04:00 字數 940 閱讀 4743

輸入乙個數字n,輸出1到n的所有排列方式。
設定n+1個盒子(box),第1個盒子置於第1步,第2個盒子置於第2步... ...

設定n張撲克牌(poker),上面分別記有數字1到n。

假設求3張牌放入3個盒子的所有排列方式。

初始人站在第1步,即第1個盒子面前。

第1步:檢查所有牌,將1號牌發給1號盒子;走一步,到第2步。

第2步:檢查所有牌,由於1號牌已經發出去了,所以只能發2號牌到2號盒子裡;走一步。

第3步:檢查所有牌,只剩3號牌沒發了,將3號牌發到3號盒子裡;走一步。

第4步:手中沒有牌可以發了,輸出排列123;退一步。

第3步:收回3號牌,由於是最後一張牌,檢查迴圈結束;退一步。

第2步:收回2號牌,檢查迴圈未結束,發現3號牌沒發,將3號牌發到2號盒子中;走一步。

第3步:檢查所有牌,將2號牌發到3號盒子裡;走一步。

第4步:輸出排列132;退一步。

第3步:收回2號牌,檢查發現3號牌不在手中;退一步。

第2步:收回3號牌,檢查迴圈結束;退一步。

第1步:收回1號牌,檢查2號牌,2號牌沒發,將2號牌發到1號盒子中;走一步。

第2步:檢查所有牌,1號牌沒發,將1號牌發到2號盒子中;走一步。

第3步:檢查所有牌,3號牌沒發,將3號牌發到3號盒子中;走一步。

第4步:輸出排列213,退一步

......

#include int n,box[100],poker[100];

int main()

void quan_pai_lie(int step)

for(i=1;i<=n;i++)

if(poker[i]==0)//0表示撲克牌還在手上

}

C語言 全排列

全排列問題 description 輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。input 包含多組測試資料,每組測試資料報含乙個正整數n 1 n 9 output 由1 n組成的所有不重複的數字序列,每行乙個序列。sample input 3sa...

C語言 全排列

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小...

全排列演算法 C語言

includevoid swap int a,int x,int y void perm int a,int m,int n 全排列函式 if m n for int i 0 i思路,比如要求12345的全排列,那可以先求出以1開頭,2345剩下四個數的全排列,以此類推,求出2開頭,3開頭的,最後求...