C語言 全排列

2021-08-20 10:35:27 字數 826 閱讀 7319

全排列問題

description

輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。

input

包含多組測試資料,每組測試資料報含乙個正整數n(1≤n≤9)。

output

由1~n組成的所有不重複的數字序列,每行乙個序列。

sample input

3sample output

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

思路:建立函式時傳乙個n用來進行計算其迴圈到次數,即全排已經排好的或者說還可以排的次數;

然後每次迴圈從1到n找,但要有乙個標記陣列用來標記哪乙個是已經被選中了,如果沒有選中說明可以繼續選,選中過了的,則跳過去找其他的,每次選中的都存到乙個陣列中,如果之後直接輸出這個陣列(這個方法告訴我們了,對於輸出乙個序列的問題時,如果其中序列的元素不是同時得到的時候,則可以通過存入到乙個陣列中,然後輸出陣列的操作);別忘了,每次結束乙個序列的輸出後,再依次退出遞迴的時候要緊接著將上乙個使用的數值給再標記為沒有被選中;這樣才能進行其他的;

#include#includevoid dfs(int );

int queue_number[10];

int tag[9]=;

int n;

int main()

return 0;

}void dfs(int t)

return;

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

}}

C語言 全排列

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

全排列(c語言)

輸入乙個數字n,輸出1到n的所有排列方式。設定n 1個盒子 box 第1個盒子置於第1步,第2個盒子置於第2步.設定n張撲克牌 poker 上面分別記有數字1到n。假設求3張牌放入3個盒子的所有排列方式。初始人站在第1步,即第1個盒子面前。第1步 檢查所有牌,將1號牌發給1號盒子 走一步,到第2步。...

全排列演算法 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開頭的,最後求...