集合里的乘法

这篇博客探讨了如何解决一个整数集合S中选取非空子集,使其元素相乘得到目标数T的问题。文章介绍了输入输出格式,并通过递归的方法分析问题,提供了代码实现来解决这一变体的背包问题。
摘要由CSDN通过智能技术生成
08 集合里的乘法
描述

给定整数集合S和一个目标数T,判断是否可以从S中挑选一个非空子集,子集中的数相乘的乘积为T。

关于输入

输入为两行。
第一行为目标数T和S中的元素个数N,以空格隔开。
第二行为S中的N个元素,以空格隔开。
其中 N <= 16。

关于输出

如果可以,则输出YES,否则输出NO。

例子输入
Sample Input 1:
12 5
1 2 3 4 5
Sample Input 2:
33 5
4 2 8 7 5
例子输出
Sample Output 1:
YES
Sample Output 2:
NO
分析

这个题事实上是背包问题的一个变体,也可以做有关动态规划的优化。但是这里我们只用递归的形式来解决。

类似背包问题的解法,我们用一个函数的参数来表征当前的结果,另一个函数的参数表示当前正在对第几个物品进行判断。事实上,这就是用递归的形式来完成一个N层循环,遍历所有可能的情况来得到解。

代码实现
#include
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值