zoukankan      html  css  js  c++  java
  • 编程题--装满篮子

    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");

             }

                               

    }

  • 相关阅读:
    以管理员权限运行程序?
    vb6 判断64位操作系统
    vb6动态创建webbrowser
    vb6中webbrowser控件树转换备忘
    vb6异步ADO操作
    sql compact 使用EF无法更新的问题?
    本地vbs调试快速显示输出
    c# 加密转载 备忘
    vb.net 动态调用api
    SharePoint List 查看器
  • 原文地址:https://www.cnblogs.com/jhding/p/5846696.html
Copyright © 2011-2022 走看看