時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:3 描述
找出從自然數1、2、... 、n(0
輸入
輸入n、r。
輸出按特定順序輸出所有組合。
特定順序:每乙個組合中的值從大到小排列,組合之間按逆字典序排列。
樣例輸入
5 3
樣例輸出
543542541
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
char
res[10];
int
n,r;
void
dfs(
int
x,
int
y)
}
}
int
main()
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 ...