题解 | #最小邮票数#

最小邮票数

https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1

#include <stdio.h>

int minStamps;

// target:还需要的目标数
void dfs(int target, int currentStamps, int index, int n, int* stamps) {
    if (target == 0) {
        // 达到目标值,更新最小邮票张数
        if (currentStamps < minStamps) {
            minStamps = currentStamps;
        }
        return;
    }

    if (index == n || target < 0) {
        // 遍历完所有邮票或者目标值小于0,回溯
        return;
    }

    // 选择当前邮票
    // 确保每次index+1
    dfs(target - stamps[index], currentStamps + 1, index + 1, n, stamps);

    // 不选择当前邮票,继续下一张邮票
    dfs(target, currentStamps, index + 1, n, stamps);
}

int main() {
    int total;// 目标总数
    while (scanf("%d", &total) != EOF) { 
        int count;// 邮票张数
        scanf("%d", &count);
        int stamps[count];
        for (int i = 0; i < count; i++)
        {
            scanf("%d", &stamps[i]);
        }
        minStamps = 20;
        dfs(total,0,0,count,stamps);
        if(minStamps == 20){
            printf("%d",0);
        }else{
            printf("%d",minStamps);
        }
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
Steven267:这不喷回去?花钱是大爷,记住这个道理
点赞 评论 收藏
分享
码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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