题解 | #求和#

求和

http://www.nowcoder.com/practice/11cc498832db489786f8a03c3b67d02c

  1. 这是求和得常用DFS回溯套路
#include<bits/stdc++.h>
using namespace std;

void dfs(vector<vector<int>>& ans, vector<int> &res,int index, int sum, int target,int end){

    //base case
    if(sum==target){
        for(int i=0;i<res.size()-1;i++){
            cout<<res[i]<<" ";
        }
        cout<<res[res.size()-1]<<endl;
        return;
    }


    for(int i = index; i<=end && sum+i <= target;i++){ //sum+i<=m剪枝
        res.push_back(i);
        dfs(ans,res, i + 1 , sum+i ,target,end);
        res.pop_back();//回溯
    }



}



int main(){
    int n,m;

    while(cin>>n>>m){

        vector<vector<int>> ans;
        vector<int> res;

        dfs(ans,res,1,0,m,n);
        res.clear();


    }


    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务