华为机试题--装满篮子

Posted jh.ding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试题--装满篮子相关的知识,希望对你有一定的参考价值。

2 装满篮子

假设一个篮子最大载重为W,要求从多个不同重量物品中挑选出部分,使得其重量之和刚好等于W。

输入若干个正整数,其中第一个数值为篮子载重,后面若干个数值表示不同物品的重量,请判断是否存在方案能刚好装满篮子,存在装满篮子的方案输出YES,并按照输入顺序输出装满篮子的物品重量,以空格隔开;若不存在则输出NO。

备注:本题中只存在一种装满方案。

理解为背包问题:

C语言代码:

#include<stdio.h>

 

void main()

{

         int i,j,data[100],backet[100],k=0,w,m[100][100];

        

         while(scanf("%d",&data[k])!=EOF)  //输入ctrl+z停止输入

         {k++;}

 

         w=data[0];  //篮子总重量

         int n=k-1;

 

         for (i=1;i<k;i++)

         {

                   backet[i-1]=data[i];  //k-1个物品的重量

         }

 

        

         for(i=0;i<=n;i++)

         {

                   for(j=0;j<=w;j++)

                   {

                            m[i][j]=0;

                   }

         }

 

         for(i=1;i<=n;i++)

         {

                   for(j=1;j<=w;j++)

                   {

                            if(j>=backet[i-1])

                            {

                                     if(m[i-1][j]<m[i-1][j-backet[i-1]]+backet[i-1])

                                     {

                                               m[i][j] = m[i-1][j-backet[i-1]]+backet[i-1];

                                     }

                                     else

                                     {

                                               m[i][j] = m[i-1][j];

                                     }                

                            }

                            else

                            {

                                     m[i][j] = m[i-1][j];

                            }

                   }

         }

 

         if (m[n][w]==w)

         {

                   printf("YES");

         }

         else

         {

                   printf("NO");

         }

                           

}

以上是关于华为机试题--装满篮子的主要内容,如果未能解决你的问题,请参考以下文章

华为OD机试题 - 新学校选址(JavaScript)

华为OD机试题 - 求最大数字(JavaScript)

华为OD机试题 - 获得完美走位(JavaScript)

华为OD机试题 - 数字加减游戏(JavaScript)

华为OD机试 - 运动会 | 机试题算法思路 2023

华为OD机试题 - 求字符串中所有整数的最小和(JavaScript)