zoukankan      html  css  js  c++  java
  • codevs 4064 组合 x

    很久之前发过啦~不过删掉了...再发一下

    4064 组合

     时间限制: 1 s

     空间限制: 256000 KB

     题目等级 : 黄金 Gold

    题解

     查看运行结果

    题目描述 Description

    组合就是从n个元素中抽出r个元素(不分顺序且r <  n),我们可以简单地将n个元素理解为自然数12n,从中任取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("
    ");
    }
    
    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

    如果运气好也是错,那我倒愿意错上加错!

    ❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

  • 相关阅读:
    JVM 内存布局
    线程池总结
    Redis持久化
    Java编程基础
    toString()、String.valueOf、(String)强转
    4 种主流的 API 架构风格对比
    kubernetes 节点设置不可调度
    Linux下如何查看哪些进程占用的CPU内存资源最多
    Linux openssl1.0.2k升级openssl1.1.1e版本教程
    对一些权限题密码的说明
  • 原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/7063448.html
Copyright © 2011-2022 走看看