题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

#include <stdio.h>
#include <string.h>
//不会做,借助榜一大佬的方法
int main() {
    int n;
  //输入所有的数据
    while (scanf("%d", &n) != EOF) {
        int weight[n],num[n],i,j,k,total=0;
        for(i=0;i<n;i++) scanf("%d",&weight[i]);
        for(i=0;i<n;i++) scanf("%d",&num[i]);
  //计算出最大的重量
        for(i=0;i<n;i++)
        total+=weight[i]*num[i];
  //创建哈希表,表的下标代表重量,表的0或1代表这个重量是否能取到
        int hash[total+1];
        memset(hash,0,sizeof(hash));
        hash[0]=1;
  //循环,如果某个重量存在,则这个重量加上砝码的重量也存在
        for(i=0;i<n;i++)
        for(j=0;j<num[i];j++)
        for(k=total;k>=0;k--)//反向确认循环,正向的话会污染哈希表
            if(hash[k]==1) hash[k+weight[i]]=1;
   //计算所有存在的重量     
        int count=0;
        for(i=0;i<total+1;i++)
        if(hash[i]==1) count++;

        printf("%d",count);

    }
    return 0;
}

全部评论

相关推荐

在努力的外卷侠很靠谱:怎么,大家都没保底吗?我这美团已经入职了,不说了,系统派单了。
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务