题目描述

小米之家是成人糖果店。里面有很多便宜,好用,好玩的产品。中秋节快到了;小米之家想给米粉们准备一些固定金额大礼包。对于给定的一个金额,需要判断能不能用不同种产品(一种产品在礼包最多出现一次)组合出来的这个金额。聪明的你来帮帮米家的小伙伴吧。

输入

输入N(N是正整数,N<=200)
输入N个价格p(正整数,p<10000)用单空格分割
输入金额M(M是正整数,M<=100000)

输出

能组合出来输出 1
否则输出 0

样例输入

6
99 199 1999 10000 39 1499
10238

样例输入

1

题目解析

关键词:

  • 背包问题
  • k-sum
  • 寻找和为定值的多个数

Python代码

# Summary: 小米大礼包
# Author:  Amusi
# Date:    2018-09-20
# Reference: https://www.geeksforgeeks.org/subset-sum-problem-dp-25/# A recursive solution for subset sum
def isSubsetSum(set,n, sum) : # Base Cases if (sum == 0) : return Trueif (n == 0 and sum != 0) : return False# If last element is greater than # sum, then ignore it if (set[n - 1] > sum) : return isSubsetSum(set, n - 1, sum); # else, check if sum can be obtained # by any of the following # (a) including the last element # (b) excluding the last element    return isSubsetSum(set, n-1, sum) or isSubsetSum(set, n-1, sum-set[n-1]) N = int(input())
gift_money = list(map(int, input("").split()))
#print(gift_money)M = int(input())res=isSubsetSum(gift_money,N, M)
if res:print(1)
else:print(0)

C++相关代码

// 21题递归方法
//copyright@ July && yansha
//July、yansha,updated。
#include<list>
#include<iostream>
using namespace std;list<int>list1;
void find_factor(int sum, int n)
{// 递归出口  if (n <= 0 || sum <= 0)return;// 输出找到的结果  if (sum == n){// 反转list  list1.reverse();for (list<int>::iterator iter = list1.begin(); iter != list1.end(); iter++)cout << *iter << " + ";cout << n << endl;list1.reverse();}list1.push_front(n);      //典型的01背包问题  find_factor(sum - n, n - 1);   //放n,n-1个数填满sum-n  list1.pop_front();find_factor(sum, n - 1);     //不放n,n-1个数填满sum
}int main()
{int sum, n;cout << "请输入你要等于多少的数值sum:" << endl;cin >> sum;cout << "请输入你要从1.....n数列中取值的n:" << endl;cin >> n;cout << "所有可能的序列,如下:" << endl;find_factor(sum, n);return 0;
}

参考

https://www.geeksforgeeks.org/subset-sum-problem-dp-25/

【小米2018-09-20在线笔试】小米大礼包相关推荐

  1. 小米 2019校园招聘软件开发类-2018.09.20

    最终没时间提交了,自己写的测试用例没问题 思路: 将n进制转化为十进制进行排序,找出单独出现的数,并记录字符串下标 最终按照输入字符串的顺序输出 #include <bits/stdc++.h& ...

  2. 小米暑期实习在线笔试2015-04-25

    周五晚上参加了小米的全国在线笔试,使用的是百一测评,不得不说,这是我参加过的最不靠谱的在线笔试. 先来描述题目,再来吐槽,在线笔试就是三个必做题和两个附加题. 必做题是三个算法题, 第一题是判断两个十 ...

  3. 19道小米网运维工程师笔试真题

    <19道小米网运维工程师笔试真题,你能通关吗?> 题目转至:马哥Linux运维 第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi. ...

  4. 【求职】小米 2018 秋招测试开发工程师笔试题

    小米 2018 秋招测试开发工程师笔试题 一.单选题 1.静态变量static 在不同的实例中地址是否一样?他们储存在什么区域?( ) A. 地址一样,在堆栈区. B. 地址不一样,在堆栈区. C. ...

  5. 网易互娱2018校招游戏研发工程师在线笔试

    如果题目版权限制,不能发表该题解,请私信,我会立刻删除博客. 题目描述 注意:本题只允许使用C/C++或Java进行解答,其他编程语言提交均视作无效处理. 小W有一个电子时钟用于显示时间,显示的格式为 ...

  6. 滴滴2016.09.06校招 在线笔试 - 2道编程题

    滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...

  7. 华为android版本6.0,华为可升级Android8.0|EMUI6.0名单曝光,近20款,小米该加油了...

    原标题:华为可升级Android8.0|EMUI6.0名单曝光,近20款,小米该加油了 从谷歌正式发布Android8.0至今也有一个半月多了,对于能升级的三星.索尼.HTC等手机曝光不断,让国内的安 ...

  8. 2018迅雷校园招聘客户端在线笔试B卷---输入一个有符号整数,输出该整数的反转值。

    2018迅雷校园招聘客户端在线笔试B卷-输入一个有符号整数,输出该整数的反转值. 题目描述: 输入一个有符号整数,输出该整数的反转值. 代码如下: num = list(input()) if num ...

  9. 小米网络信号测试软件,【小米5X评测】高通:骁龙625移动平台Modem及信号是亮点_手机评测-中关村在线...

    高通:骁龙625移动平台Modem及信号是亮点 骁龙移动平台=高跑分?如果你一直这样认为那就错了:高运算性能只是它真正实力的冰山一角.举个例子,你或许不知道,高速+高效的网络连接也是骁龙移动平台能够提 ...

  10. 小米春季新品发布会直播地址 小米发布会在线观看入口

    小米春季新品发布会直播 时间:2021 年 3 月 29 日 19:30 产品:小米 11 Pro/Ultra.小米 MIX 新机.小米笔记本 Pro 小米春季新品发布会直播地址http://www. ...

最新文章

  1. vs code中文乱码解决方法
  2. 树莓派如何卸载mysql_树莓派安装MySQL数据库与卸载
  3. AttributeError:module tensorflow no attribute app解决办法
  4. button active 跳转到另一个页面_一步一步实现一个古诗词网站(四)——首页
  5. Oracle数据库升级与补丁
  6. 荣耀30会升级鸿蒙吗,荣耀手机也能升级!第三批鸿蒙手机升级名单大曝光:全球第三稳了...
  7. 架构师必须知道的架构设计原则
  8. c语言的数据类型复数型,C语言数据类型
  9. Pandas将列表(List)转换为数据框(Dataframe)
  10. 字节AI LAB NLP算法二面凉+被捞后通过
  11. pic单片机 c语言开发环境,《PIC单片机开发环境入门》.pdf
  12. 李忠汇编语言-初学-第九章详解
  13. 一周学好python_学好 Python 的 11 个优秀资源
  14. DTD-文档类型定义(Document Type Definition)
  15. pathon中的元组与序列
  16. subplots_adjust()函数--matplotlib
  17. 3D打印人体骨骼?这家哈佛大学孵化的公司要为中国医生开发自己的软件平台...
  18. 微信小程序radio单选框
  19. excel数据分析案例
  20. Unity —— 百度人脸识别SDK使用

热门文章

  1. 吸收理想世界能量的气功
  2. a16z 游戏投资人:游戏制作人获得资金的多种途径
  3. python九九乘法口诀表
  4. 高通发布4款全新骁龙芯片,千元机都能加持AI了
  5. 美国宇航局计划2028年之前派遣人类定居月球表面
  6. html dashed 属性,html2canvas实现dashed虚线边框的示例
  7. MySQL基本查询语句练习
  8. i5 9400f和i7 9700f玩游戏差距多大 i5 9400f和i7 9700f哪个好
  9. 来,认识一下 JJK
  10. java中如何输入名字配对情侣网名_好听的英文情侣昵称配对 亲密备注就用它