組合數 DFS (儲存路徑)

2021-07-28 03:01:04 字數 1366 閱讀 5799

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3 描述

找出從自然數1、2、... 、n(0

輸入

輸入n、r。

輸出按特定順序輸出所有組合。

特定順序:每乙個組合中的值從大到小排列,組合之間按逆字典序排列。

樣例輸入

5 3

樣例輸出

543

542541

532531

521432

431421

321

**[苗棟棟]原創

上傳者

苗棟棟思路: 很顯然是要遍歷一遍,所以是dfs 。

我的**:可能有些亂,但畢竟是自己寫的,。。對於新手的我,還是不錯的。(稍微更加理解這個bfs中的遞迴感覺)

#include

#include

#include

#include

#include

#define inf 0x3f3f3f

#define m 10000+10

using namespace std; 

int n,r;

int a[m];

int v[15];

int pre[15];

stackmap[m];  // 用這個存路徑了

int k=0;

void getroads(int ss)

k++;

} void dfs(int num,int step)  //  step 表示 這已經記錄幾個數字

if(num==0) num=n;  // 

else 

v[num]=1;

for(int i=num;i>0;i--) }

}int main()  

printf("\n");}}

return 0;

} 別人的**  。。額,怎麼這麼簡單(巧妙),怎麼被我弄的這麼複雜,,,可能還是需要加深理解 (多練習)把   0.0

#include

charres[10];

intn,r;

voiddfs(intx,inty)

}

}

intmain()

hdu 1799 DFS求組合數

problem description 我們知道,在程式設計中,我們時常需要考慮到時間複雜度,特別是對於迴圈的部分。例如,如果 中出現 for i 1 i n i op 那麼做了n次op運算,如果 中出現 fori 1 i n i for j i 1 j n j op 那麼做了n n 1 2 次op...

組合數 南陽oj32 DFS

描述 找出從自然數1 2 n 0 輸入 輸入n r。輸出按特定順序輸出所有組合。特定順序 每乙個組合中的值從大到小排列,組合之間按逆字典序排列。樣例輸入 5 3 樣例輸出 543 542541 532531 521432 431421 321 include includeint m,n int v...

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...