zoukankan      html  css  js  c++  java
  • 10-能不能组成m

    /*                                              找数达人
                  时间限制:1000 ms  |  内存限制:65535 KB
                                难度:2

    描述

        小明最近做出了一道题:如何在一组数中寻找三个数,这三个数的和等于一给出的定值m,洋洋得意。于是小华不乐意了,小华说,你能找找在一组数字中是否有n个数,

    使得这n个数的和等于一给定的定值m吗?

         1.0 < 数字大小 <= 1000

         2. 0 < 序列中数字个数 <= 1000

         3. 0 <= m <=1000

    输入
        多组数据,每组两行,第一行为序列内容,第二行为m的值。
    输出
        如能找到,输出Yes,否则,输出No。
    样例输入

        1 3 4 5
        5
        1 3 4 5 9
        2

    样例输出

        Yes
        No
    */
    //思路:想到01背包就简单了

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    int dp[1005];
    int a[1005];

    int main(){
        char c;
        while(~scanf("%d%c", &a[0], &c)){    //表示不会数据的输入#_#
            int m, i = 0;
            memset(dp, 0, sizeof(dp));
            while(c != ' ')
                scanf("%d%c", &a[++i], &c);
            scanf("%d", &m);
            
            for(int j = 0; j <= i; j++){   //注意这里要小于等于i
                for(int k = m; k >= a[j]; k--){
                    if(dp[k - a[j]] + a[j] > dp[k])
                        dp[k] = dp[k - a[j]] + a[j];
                }    
            }
            if(dp[m] == m)
                printf("Yes ");    
            else
                printf("No ");
            }
        return 0;
    }

  • 相关阅读:
    Android 比较好用的浏览器
    Chrome浏览器 插件
    火狐浏览器 安装网页视频下载插件(插件名称:Video DownloadHelper)
    Pandas高频使用技巧
    【Golang】关于Go中的类型转换
    基于Apache Hudi 的CDC数据入湖
    pageoffice代码优化前备份
    jnpf javacloud 微服务配置运气记录
    cAdvisor监控容器
    节点状态同步机制
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7397779.html
Copyright © 2011-2022 走看看