当前位置: 首页 > news >正文

专业网站设计哪家好快速建站费用

专业网站设计哪家好,快速建站费用,江阴外贸公司排名,wordpress长文档分页集合里的乘法 题目描述 给定一个目标数T和一个整数集合S,判断是否存在S的一个非空子集,子集中的数相乘的积为T。 关于输入 输入为两行。 第一行为目标数T,和S中的元素个数N,以空格隔开。 第二行为S中的N个元素,以空…

集合里的乘法

题目描述

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

关于输入

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

关于输出

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

例子输入
12 5
1 2 3 4 5
例子输出
YES
解题分析

这个算法的核心思想是使用深度优先搜索(DFS)遍历所有可能的子集,并计算它们的乘积。如果找到一个子集的乘积等于目标数,就返回YES,否则返回NO。

以下是该算法的详细步骤:

1. 首先,我们读取目标数T和集合S的元素。集合S的元素被存储在一个数组中,数组的索引从0开始。

2. 然后,我们调用深度优先搜索函数`dfs`,开始时的索引为0,乘积为1。这意味着我们从集合的第一个元素开始搜索,初始的乘积是1(因为任何数乘以1都等于它自己)。

3. 在`dfs`函数中,我们首先检查是否已经找到了解决方案(`flag`是否为1)或者当前乘积是否已经超过了目标数T。如果是的话,我们就直接返回,不再继续搜索。这是一种剪枝策略,可以避免无效的搜索,提高算法的效率。

4. 然后,我们检查当前的乘积是否等于目标数,如果是的话,我们就设置`flag`为1并返回。这表示我们已经找到了一个满足条件的子集。

5. 如果当前的索引已经达到了集合的大小,这意味着我们已经遍历了所有的元素,但还没有找到满足条件的子集,所以我们就返回。

6. 否则,我们对当前索引的元素有两种选择:一是选择它(将它乘入当前的乘积),二是不选择它(保持当前的乘积不变)。我们对这两种选择都进行搜索。这是深度优先搜索的核心步骤,通过递归调用`dfs`函数,我们可以遍历所有可能的子集。

7. 在主函数中,如果`flag`为1,说明我们找到了一个解决方案,输出YES。否则,输出NO。

这个算法的时间复杂度是O(2^n),其中n是集合的大小。因为对于集合中的每一个元素,我们都有两种选择:选择它或者不选择它。所以总共有2^n种可能的子集。由于题目中给出集合的大小不超过16,所以这个算法在时间上是可行的。

代码实现
#include <stdio.h>int N;
long long T, S[16];
char flag;void dfs(int index, long long product) {if (flag || product > T) return;if (product == T) {flag = 1;return;}if (index == N) return;dfs(index + 1, product * S[index]);dfs(index + 1, product);
}int main() {scanf("%lld %d", &T, &N);for (int i = 0; i < N; i++) {scanf("%lld", &S[i]);}dfs(0, 1);if (flag) {printf("YES\n");} else {printf("NO\n");}return 0;
}

http://www.yayakq.cn/news/178478/

相关文章:

  • 企业网站建设板块毕业设计2网站建设
  • 美工怎么做网站效果图免费游戏网页入口
  • 企业网站管理系统cms国内十大云服务器商排名
  • 国际物流东莞网站建设企业购物网站建设
  • 天峻县公司网站建设做广告的公司
  • 深圳 网站建设设计中核二三建设有限公司
  • 企业公众号以及网站建设平面设计需要学什么软件?
  • 旅游网站设计新手互联网创业项目
  • 盗qq的钓鱼网站怎么做郑州旅游网站建设
  • 石家庄市制作网站公司东莞建设工程信息网
  • 建设厅网站举报工程管理咨询公司
  • 英文网站开发哪家好丹阳网站制作
  • 电商网站的付款功能英文网站建站
  • 哪个网站美丽乡村做的比较好商务网站建设与维护 ppt
  • 宁波制作网站企业百度浏览器官网
  • 请别人做网站需要注意什么网站背景怎么换
  • 做网站服务器e3.net电商网站开发设计
  • 页面设计制作网站h5个人网页设计心得
  • 一个app能卖多少钱seo研究中心超逸seo
  • 站群优化公司平面设计实习报告
  • 艺阳科技网站建设百度推广太原网站建设
  • 网站开发技术 北京网站开发需要学习什么技术
  • 高邮做网站贵州十大广告公司
  • 关于单位建设网站的申请提示网站建设页面
  • 河南省建设厅网站打不开互联网站平台有哪些
  • 视频门户网站建设项目标书在线阅读小说网站开发
  • 建设网站需要准备哪些内容做pc端网站资讯
  • 沧州做网站wordpress 多语言版本号
  • 公司做网站收费360打不开建设银行的网站
  • 宁波自助建站系统做网站卖链接