zoukankan      html  css  js  c++  java
  • 牛客网-求和

    题目描述

    输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来

    输入描述:

    每个测试输入包含2个整数,n和m

    输出描述:

    按每个组合的字典序排列输出,每行输出一种组合
    示例1

    输入

    5 5

    输出

    1 4
    2 3
    5
    #include<iostream>
    #include<string>
    #include<vector>
    #include<algorithm>
    using namespace std;
    vector<int> vec;
    
    void find_ans(vector<int> res,int cur_pos,int n,int cur_sum,int sum){
        if(cur_pos>=n)
            return;
        cur_sum+=vec[cur_pos];
        res.push_back(vec[cur_pos]);
        if(cur_sum==sum){
            for(int i=0;i<res.size()-1;++i){
                cout<<res[i]<<" ";
            }
            cout<<res[res.size()-1]<<endl;
            return;
        }
        else if(cur_sum>sum){
            return;
        }
    
        find_ans(res,cur_pos+1,n,cur_sum,sum);
        vector<int>::iterator it=res.end();
        --it;
        res.erase(it);
        find_ans(res,cur_pos+1,n,cur_sum-vec[cur_pos],sum);
    }
    
    
    int main(){
        int n,m;
        cin>>n>>m;
        for(int i=0;i<n;++i){
            vec.push_back(i+1);
        }
        //若n大于m的话,那么m后面的数字肯定不用再考虑了,所以只考虑1~m之间的可能组合
        if(n>=m){
            n=m;
        }
        vector<int> res;
        int sum=0;
        find_ans(res,0,n,sum,m);
        system("pause");
        return 0;
    }

    注:参考牛客网已通过的代码

  • 相关阅读:
    HttpClient——POST请求方法
    【Httpclient+TestNG】接口自动化测试——GET请求示例
    一些杂碎的小知识点
    搭建linux服务器的环境
    javase(1)
    事务处理
    数据库优化
    表单重复提交--->使用Session防止表单重复提交
    两个小程序
    java基础小知识(2)
  • 原文地址:https://www.cnblogs.com/rgly/p/7471292.html
Copyright © 2011-2022 走看看