全排列(深度優先搜尋)

2021-07-11 01:57:59 字數 1438 閱讀 9458

description

列出所有數字1到數字n的連續自然數的排列,要求所產生的任一數字序列中不允許出現得復數字。

input

輸入:n(1<=n<=9)

output

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

sample input

3

sample output

1 2 3 

1 3 2 

2 1 3 

2 3 1 

3 1 2 

3 2 1

解題思路:讀入n

,然後開始用搜尋,結束條件為

s>n

,輸出該組資料並退出,如果

dep>n

則直接退出。從1到

n迴圈,把

x[s]

賦值為i

,如果g[i]等於0

則開始遞迴,並回溯。

程式:
var
n,m:longint;
x,g:array[0..10] of longint;

procedure try(dep,s:longint);
var
i:longint;
begin
if s>n then
begin

for i:=1 to n do

write(x[i],' ');

writeln;

exit;

end;
if dep>n then exit;
for i:=1 to n do
begin

x[s]:=i;

if g[i]=0 then

begin

g[i]:=1;

try(dep+1,s+1);

g[i]:=0;

end;

x[s]:=0;

end;
end;

begin
readln(n);
try(0,1);
end.

深度優先搜尋 全排列

題目要求 輸入乙個數n,輸出1 n的全排列。比如,輸入3,輸出123 132 213 231 312 321。解題思路 用深度優先搜尋,假設有n個盒子,從第乙個盒子開始依次放直到放到最後乙個盒子,期間用到遞迴呼叫。放到最後乙個後,再依次返回,進行重新組合,其中還用到標記陣列來判斷是否被用過。實現 i...

深度優先搜尋(DFS) 全排列

題目描述 對於自然數n 按字典序輸出由1 n組成的所有不重複的數字序列,每行乙個序列,每個數字之間有乙個空格。例子 輸出 1 2 2 1例子 輸出1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 思路解析 猛一看上題跟dfs沒什麼關係,也沒有圖給我們搜尋,其實對於一道題,最難的...

深度優先搜尋之全排列

小馨小諾還有小雪和小謝四個人去學校,路上他們走成了一排,愛思考的小馨提出了問題 我們四個人一排共有多少種站法?數學比較好的小雪說這不是全排列嗎,有4的階乘種4 3 2 1 24種啊。小馨說對,但是你用程式設計模擬一下。小謝自信的回答道四層for迴圈然後去重即可。小馨還是不太滿意,要是有n個人呢。小諾...