zoukankan      html  css  js  c++  java
  • ACM 组合数

    组合数

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合。
     
    输入
    输入n、r。
    输出
    按特定顺序输出所有组合。
    特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
    样例输入
    5 3
    样例输出
    543
    542
    541
    532
    531
    521
    432
    431
    421
    321

    关键点
    1.画出递归树,理清每次递归或每到一个节点时的判断条件
    2.需要有两个全局变量记录递归路径和递归次数

    #include<stdio.h>
    
    
    int str[5];
    int count = 0;
    
    void output(int m, int n)
    {
        str[count] = m;
        count++;
        if(count == n+1)
        {
            for(int i = 1; i < count; i++)
                printf("%d", str[i]);
            printf("
    ");
        }
        else
        {
            while(m-- && m > 0)
            {
                output(m,n);
            }
        }
        count--;
    }
    
    int main()
    {
        int M,N;
        scanf("%d%d",&M,&N);
        output(M+1, N);
        return 1;
    }
  • 相关阅读:
    为什么和什么是 DevOps?
    使用jmeter 上传文件
    jmeter 获取执行脚本的路径
    随笔(九)
    随笔(八)
    随笔(七)
    随笔(六)
    随笔(五)
    随笔(四)
    随笔(三)
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/4569995.html
Copyright © 2011-2022 走看看