题解 | #神奇的口袋#

神奇的口袋

https://www.nowcoder.com/practice/9aaea0b82623466a8b29a9f1a00b5d35

//参考高赞的方法,用分治法。修改了部分代码,便于理解
#include <iostream>
using namespace std;

int count(int target_limit,int v[],int index){
    if(target_limit==0){
        return 1;
    }
    if(target_limit<0||index<0){
        return 0;
    }
    return count(target_limit,v,index-1)+count(target_limit-v[index],v,index-1);
}

int main() {
    int n;
    while (cin>>n) {
        int v[21];
        for(int i=0;i<n;i++){
            cin>>v[i];
        }
        int target_limit=40;
        cout<<count(target_limit,v,n)<<endl;
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务