题解 | #神奇的口袋#

神奇的口袋

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

#include<iostream>
using namespace std;

#define vsum 40
int typenum(int v[], int n, int s);//表示从数组v[n]中选择某些物品使得体积和为s,共有多少情况。
int main(){
    int n;
    scanf("%d",&n);//功能: 执行格式化输入;其调用格式为: scanf("<格式化字符串>",<地址表>);
    int v[n];
    for(int i = 0; i < n; i++)
        scanf("%d", &v[i]);
    printf("%d", typenum(v, n, vsum));//功能: 执行格式化输出;其调用格式为: printf("<格式化字符串>",<数值>);
    return 0;
}

int typenum(int v[], int n, int s){//n为数组长度,s为体积和
    if(s == 0) return 1;//当体积和为0时,表明不需要选择,这本身也是一种选择
    if(n == 1){
        if(v[0] != s) return 0;
        else return 1;
    }
    return (typenum(v, n-1, s) + typenum(v, n-1, s-v[n-1]));
}

全部评论

相关推荐

喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务