zoukankan      html  css  js  c++  java
  • 组合问题

    题目描述

    从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。n>0,  0<=m<=n,  n+(n-m)<=25。 

    输入

    一个整数n。

    输出

    按照从小到大的顺序输出所有方案,每行1个。

    首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 9 12排在1 3 10 11前面)。

    样例输入

    5 3
    

    样例输出

    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
    提示
    m=0的时候一定要特判,不然必WA;


    #include<bits/stdc++.h>
    using namespace std;
    int a[100];
    void f(int i,int n,int m,vector<int> s)
    {
        int j,temp;
        for(; i<n-m+1; i++)
        {
            temp=a[i];
            if(a[i])
            {
                s.push_back(a[i]);
                a[i]=0;
                if(m>1)
                    f(i+1,n,m-1,s);
                else
                {
                    for(j=0; j<s.size()-1; j++)
                        cout<<s[j]<<' ';
                    cout<<s[j]<<endl;
                }
                s.pop_back();
            }
            a[i]=temp;
        }
    }
    int main()
    {
        int i,n,m;
        cin>>n>>m;
        if(m==0)
            cout<<endl;
        else
        {
            for(i=0; i<n; i++)
                a[i]=i+1;
            vector<int> s;
            f(0,n,m,s);
        }
        return 0;
    }
    View Code
    #include <bits/stdc++.h>
    #define ll long long
    #define met(a) memset(a,0,sizeof(a))
    #define inf 0x3f3f3f3f
    using namespace std;
    const int mod=1e9+7;
    int m,n,r,a[25];
    void dfs(int x)
    {
        int i,j;
        for(i=a[x-1]+1; i<=n; i++)
        {
            a[x]=i;
            if(x==r)
            {
                for(j=1; j<=r; j++)
                    cout<<setw(3)<<a[j];
                cout<<endl;
            }
            else
                dfs(x+1);
        }
    }
    int main(void)
    {
        std::ios::sync_with_stdio(false);
        std::cin.tie(0);
        std::cin>>n>>r;
        dfs(1);
        return 0;
    }
    dfs
  • 相关阅读:
    背景不动,内容滚动的解决方案(移动端)
    移动端真实1px的实现方法
    用户模板和用户场景
    构建之法阅读笔记02
    学习进度六
    NABCD
    构建之法阅读笔记01
    学习进度五
    梦断代码阅读笔记03
    地铁系统
  • 原文地址:https://www.cnblogs.com/nublity/p/9269701.html
Copyright © 2011-2022 走看看