zoukankan      html  css  js  c++  java
  • 组合数(dfs)

    组合数

    时间限制: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

    解:(https://blog.csdn.net/a15994269853/article/details/21109443)递归算法设计时要找出大规模问题与小规模问题之间的关系。首先固定第一个数5,其后求解n=4,r=2的组合数,共6个组合,其次固定第一个数4,其后就是求解n=3,r=2的组合数,总共是3个组合数;最后固定第一个数3,其后就是求解n=2,r=2的组合数,共一个组合。递归思路就是:n个数中r个数组合递推到n-1个数中r-1个数有组合,n-2个数中r-1个数有组合,r-1个数中r-1个数组合;当r=1时,递归终止。

    #include<iostream>
    using namespace std; 
    int n,r;
    int num[100];
    int dfs(int x,int y){ 
        int i;
        if(y==0){ 
            for (i=r; i>0; i--)
               cout<<num[i];//直到r==1时结束 
            cout<<endl;
            return 0;
        }
        else 
            for (i=x; i>=y; i--){//先遍历最大数的组合,如果n==5,先遍历r==3时,5的所有组合 
                num[y]=i;
                dfs(i-1,y-1);//再依次遍历4,3.... 
            }
    }
    int main(){ 
        cin>>n>>r;
        dfs(n,r);
        return 0;
    }
  • 相关阅读:
    父子项目
    生成资源文件时候,可以动态替换为maven属性
    生命周期阶段与插件目标任务绑定
    私服
    仓库
    DotNetBar教程
    SQL基础--> 约束(CONSTRAINT)
    jQuery.Autocomplete实现自动完成功能(详解)
    C# 解析JSON格式数据
    JSON 数据格式解析
  • 原文地址:https://www.cnblogs.com/geziyu/p/9302894.html
Copyright © 2011-2022 走看看