codevs 4064 组合 x
2017-06-22 10:08
197 查看
很久之前发过啦~不过删掉了...再发一下
4064 组合
时间限制: 1 s
空间限制: 256000 KB
题目等级 : 黄金 Gold
查看运行结果
题目描述 Description
组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。
例如n=5,m=3所有组合为:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
输入描述 Input Description
输入两个正整数n,m。
输出描述 Output Description
输出n个数抽选r的所有抽法。
样例输入 Sample Input
5 3
样例输出 Sample Output
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
数据范围及提示 Data Size & Hint
m<=n<=8
思路:裸的深搜2333
坑点:数组范围要开的稍大一点,不然会RE
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n,r,cnt; bool v[999]; int ans[999]; void print() { for(int i=1;i<=cnt;i++) { printf("%d ",ans[i]); } printf("\n"); } void dfs(int now) { v[now]=1; ans[++cnt]=now; if(cnt==r) print(); for(int i=1;i<=n;i++)///find r (ge) number { if(!v[i] && i>now) { dfs(i); v[i]=0; cnt--; } } } int main() { scanf("%d%d",&n,&r); int Ms=n-r+1; for(int i=1;i<=Ms;i++) { memset(v,0,sizeof(v)); memset(ans,0,sizeof(ans)); cnt=0; dfs(i); } return 0; }View Code
相关文章推荐
- codevs 1631组合数 乘法逆元求组合数
- Codevs 3322 时空跳跃者的困境(组合数 二项式定理)
- codevs 1994 排队 排列组合+高精度
- Codevs 2505 上学路线 (组合数学)
- CodeVS1631 组合数
- [codevs1262] 不要把球传我 数论+组合数学
- codevs1058合唱队形
- Codevs3269 混合背包 经典背包dp
- Windows环境下vscode-go安装笔记
- Codevs 1020 孪生蜘蛛
- 使用VS Code开发ASP.NET Core 应用程序
- 倍增LCA code[vs]1036商务旅行
- 【最近公共祖先】【块状树】CODEVS 1036 商务旅行
- NodeJS,MongoDB,Vue,VSCode 集成学习
- Codevs 1138 聪明的质监员 2011年NOIP全国联赛提高组
- CODE[VS] 天梯 1457 又是求和?
- 【codevs4163】 hzwer与逆序对(树状数组+离散化)
- codevs1501 二叉树的最大宽度与深度
- CODEVS 1001舒适的路线
- codevs1098 均分纸牌