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;
    }
  • 相关阅读:
    BZOJ 2005 能量采集
    HDU 2841 Visible Trees(莫比乌斯反演)
    hihocoder 1543
    hihocoder 1311
    hdu 6069
    hdu 6058
    hdu 6034
    拓展欧几里得
    poj 3321
    树状数组总结
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/4569995.html
Copyright © 2011-2022 走看看