dfs大樓之洛谷1691

2021-08-21 04:27:06 字數 871 閱讀 1199

設r=是要進行排列的n個元素。其中元素r1,r2,……,rn可能相同。使設計乙個演算法,列出r的所有不同排列。

給定n以及待排列的n個元素。計算出這n個元素的所有不同排列。

輸入格式:

第1行:元素個數n(1<=n<500)

第2行:一行字串,待排列的n個元素

輸出格式:

計算出的n個元素的所有不同排列,最後一行是排列總數。

輸入樣例#1:

複製

4

aacc

輸出樣例#1:

複製

aacc

acac

acca

caac

caca

ccaa

6

輸出按字典順序排

顯然,這是一道dfs的題目,不過不是簡單的dfs,而是用字元的;

於是想到用字元陣列來代替普通的陣列;

然後題目說會有重複的字母;

於是想到用沒個字母出現的次數來記錄當前狀態,每次遇到,就減一,回溯時再加回來;

下面是我自己敲的**:

#include

#include

using namespace std;

int n;

int b[26];

char ss[1000];

int counts=0;

void dfs(int x)

{if(x>=n)

{for(int i=0;i<=n-1;i++)

{cout<>n;

cin>>s;

for(int i=0;i因為自己先嘗試過用字串來實現,但是失敗了,所以採用字元陣列

其實我覺得用字串是可以的,但是暫時沒想到怎麼去寫,容我再思考一番。

dfs大樓之洛谷1706

輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。輸入格式 n 1 n 9 輸出格式 由1 n組成的所有不重複的數字序列,每行乙個序列。每個數字保留5個常寬。輸入樣例 1 複製3 輸出樣例 1 複製1 2 3 1 3 2 2 1 3 2 3 1 3 1 ...

dfs大樓之洛谷1988

2008北京奧運會,你想成為四川汶川的一名火炬手,經過層層選拔,終於到了最後一關,這一關是一道很難的題 任意給定乙個正整數n n 100000 求乙個最小的正整數m,使得n m的十進位制表示形式裡只含有1和0。輸入格式 一行,輸入乙個整數n。輸出格式 輸出一行,如果有解,輸出最小的m,否則輸出 no...

dfs大樓之洛谷1036

已知 n n 個整數 x 1,x 2,x nx1 x2 xn 以及 1 1 個整數 k k k k n 從 n n 個整數中任選 k k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3n 4,k 3 4 4 個整數分別為 3,7,12,193,7,12 19 時,可得全部的組合與它們的和為...