zoukankan      html  css  js  c++  java
  • 组合的输出

    【问题描述】
        排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<n),我们可以简单地将n个元素理解为自然数12n,从中任取r个数。
        现要求你用递归的方法输出所有组合。
        例如n5r3,所有组合为:
        l 2 3   l 2 4   1 2 5   l 3 4   l 3 5   1 4 5   2 3 4   2 3 5   2 4 5   3 4 5
    【输入】
        一行两个自然数nr(1<n<211<r<n)
    【输出】
       所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。
    【样例】
    compages.in       compages.out
    5   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
     #include<iostream>
     #include<cstdio>
     #include<cstring>
     #include<string>
     #include<algorithm>
     #include<cmath>
     using namespace std; 
     int n,c,a[1000]={1};bool b[1000];
     void dfs(int);
     void print();
     int main()
     {
         cin>>n>>c;
         dfs(1);
         return 0;
     }
     void dfs(int q)
     {
         int i;
         for(i=a[q-1];i<=n;i++)
         {
             if(!b[i])
             {
                 a[q]=i;
                 b[i]=1;
                 if(q<c)dfs(q+1);
                 else print();
                 b[i]=0;
            }
        }
     }
     void print()
     {
         for(int i=1;i<=c;i++)
         {
             cout<<a[i]<<" ";
         }
         cout<<endl;
     }
  • 相关阅读:
    4.0中的并行计算和多线程详解(一)
    Dojo工具包简介
    javascript中event.keyCode
    iText简介(转)
    ServletContext
    java文件加解密算法
    ResultSet 的相关介绍
    spring的AOP的四种实现方式
    java实现文件zip压缩或者解压缩
    Hibernate查询数据的几种方式以及HQL用法及参数的几种使用方法
  • 原文地址:https://www.cnblogs.com/sssy/p/6611317.html
Copyright © 2011-2022 走看看