题解 | #神奇的口袋#

神奇的口袋

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

#include <iostream>
#include<vector>
using namespace std;
vector<int>v;
int res=0;
void traceback(int k,int n,int sum){//k从0开始
    if(sum==40){res++;return;}
    else if(sum>40){return ;}
    else if(k==n) return ;
    traceback(k+1,n,sum+v[k]);
    traceback(k+1,n,sum);
}
int main() {
    //利用 类似回溯算法
    //每个分支对应选 不选
    int n;
    while(cin>>n){
        v.clear();res=0;int t=n;
        while(n-->0){
            int t;cin>>t;
            v.push_back(t);
        }
        traceback(0,t,0);
        cout<<res;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:36
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务