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

    题目描述

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

    现要求你不用递归的方法输出所有组合。

    例如n=5,r=3,所有组合为:

    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

    输入输出格式

    输入格式:

     

    一行两个自然数n、r(1<n<21,1<=r<=n)。

     

    输出格式:

     

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

    **注意哦!输出时,每个数字需要3个场宽,pascal可以这样:

    write(ans:3);

     

    输入输出样例

    输入样例#1: 复制
    5 3 
    
    输出样例#1: 复制
      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<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,r;
    int vis[22],cnt[22];
    void dfs(int num,int pre){
        if(num==r){
            for(int i=1;i<=r;i++)
                printf("%3d",cnt[i]);
            cout<<endl;
            return ;
        }
        for(int i=pre+1;i<=n;i++){
            if(!vis[i]){
                vis[i]=1;
                cnt[num+1]=i;
                dfs(num+1,i);
                vis[i]=0;
            }
        }
    }
    int main(){
        scanf("%d%d",&n,&r);
        dfs(0,0);
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    (*^_^*)Pose Estimation:DensePose
    (^_^)Pose Estimation:SamplePose
    [*v*/]人脸识别任务算法RetinaFace
    [*v*/]人脸识别任务算法MTCNN
    从Winograd算法看INT8量化及卷积加速原理
    [*_*/]Darknet && Mobilnet
    从TensorRT看INT8量化原理
    SSD算法精度
    信用评分卡模型的理论准备
    分类模型评估指标
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7881137.html
Copyright © 2011-2022 走看看