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

2021-08-20 03:52:26 字數 812 閱讀 3719

題目描述:

對於自然數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沒什麼關係,也沒有圖給我們搜尋,其實對於一道題,最難的部分是構造,即我們怎麼運用已有的演算法思路去解決模糊的模型

配上一張圖

這道題目就是可以以1 2 3…n為根建立n棵復合條件的樹,然後輸出葉子節點到根的路徑上所有的數字,即是所求結果!

亮**吧,題目比較簡單

#include "stdafx.h"

#include

#include

int a[1000];

int flag[1000];

int n;

int print[1000];

void dfs(int k)

printf("%d\n", print[k -1]);//單純為了控制換行

return;

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

}return;

}int main()

dfs(0);

return

0;}

以上~

全排列(深度優先搜尋)

description 列出所有數字1到數字n的連續自然數的排列,要求所產生的任一數字序列中不允許出現得復數字。input 輸入 n 1 n 9 output 由1 n組成的所有不重複的數字序列,每行乙個序列。sample input 3 sample output 1 2 3 1 3 2 2 1 ...

深度優先搜尋 全排列

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

深度優先搜尋之全排列

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