zoukankan      html  css  js  c++  java
  • 南阳32--组合数(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
    来源
    [苗栋栋]原创
    上传者
    苗栋栋
    ac:
     1 #include <cmath>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 using namespace std;
     6 int dis[15], vis[15], m, n;
     7 void Dfs(int a, int b)
     8 {
     9     if(b == n + 1)
    10     {
    11         for(int i = 1; i <= n; i++)
    12             printf("%d", dis[i]);
    13         printf("
    ");
    14         return;
    15     }
    16     for(int i = a; i > 0; i--)   //保证顺序; 
    17     {
    18         if(vis[i])
    19         continue;
    20         vis[i] = 1;
    21         dis[b] = i;
    22         Dfs(i-1, b+1);       //递归; 
    23         vis[i] = 0;          //回溯; 
    24     }
    25 }
    26 int main()
    27 {
    28     while(~scanf("%d %d", &m, &n))
    29     {
    30         memset(vis, 0, sizeof(vis));
    31         Dfs(m, 1);   //传参, “1” 为dis[]数组中以1为下标存第一个数: 
    32     }
    33     return 0;
    34 } 
     
  • 相关阅读:
    C++ CheckListBox
    TreeView查获节点并选中节点
    创建文件自动重命名
    bat
    Edit显示行号
    FindStringExact
    Extended ComboBox添加图标
    C++ Combobox输入时自动完成
    C++ ComboBox基础
    C++ Code_combobox
  • 原文地址:https://www.cnblogs.com/soTired/p/4705925.html
Copyright © 2011-2022 走看看