题解 | #神奇的口袋#

神奇的口袋

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

//题目要求搜寻所有解,而不是是否可以,所以DFS时,不能找到一个解,就全部退出,而是应该遍历所有、

#include <iostream>

using namespace std;

int n;
int box[25];
bool visit[25];
int curside = 0;

void DFS(int cursize, int pos) {  //当前拿物品的值
    if (cursize == 40) {
        curside++;
        return;
    }
    for (int i = pos; i < n; i++) {
        if (cursize + box[i] > 40 || visit[i] == true) {
            continue;
        }
        visit[i] = true;//暂时加入
        DFS(cursize + box[i], i + 1);
        visit[i] = false;
    }
    return;
}

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &box[i]);
        visit[i] == false;
    }
    DFS(0, 0);
    printf("%d\n", curside);
    return 0;
}

全部评论

相关推荐

昨天 22:55
已编辑
叮咚买菜
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 10人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务