• 桐桐的组合


      题目描述  

    排列与组合是常用的数学方法,桐桐刚刚学会了全排列,就想试试组合,组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。

      输入  

    两个整数n和r(1≤r≤n≤20)。

      输出  

    输出所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。

      样例输入  

    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
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,r,a[100],p[100],vis[100];
     4 void dfs(int k)
     5 {
     6     if(k==r)
     7     {
     8         for(int i=0;i<k;i++)
     9         {
    10 
    11             cout<<setw(3)<<p[i];
    12         }
    13         cout<<endl;
    14         return ;
    15     }
    16     for(int i=0;i<n;i++)
    17     {
    18         if(!vis[i]&&a[i]>p[k-1])
    19         {
    20             vis[i]=1;
    21             p[k]=a[i];
    22             dfs(k+1);
    23             vis[i]=0;
    24         }
    25     }
    26 
    27 }
    28 int main()
    29 {
    30     cin>>n>>r;
    31     for(int i=0;i<n;i++)
    32         a[i]=i+1;
    33     dfs(0);
    34 //    cout<<cnt<<endl;
    35     return 0;
    36 }
    View Code
     
    如有错误,请指正,感谢!
  • 相关阅读:
    使用maven管理后,依然找不到需要的jar包
    ftp linux-500 OOPS问题解决-jooyong-ChinaUnix博客
    Linux命令 理解
    c++大数模板
    二分匹配专辑
    fzu2157(树形dp)
    fzu2158
    csu1356 :判断一个环是否为奇数环
    rmq模板
    zoj 3761(并查集+搜索)
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9381154.html
Copyright © 2020-2023  润新知