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

做网站价位2024年最新时政热点

做网站价位,2024年最新时政热点,前端自我介绍面试技巧,域名做违法网站目录 ​​​​ 前言 一、算法思路 二、分析过程 三、代码实现 伪代码: C: 总结 前言 【问题描述】考虑定义如下的PARTITION问题中的一个变型。给定一个n个整数的集合X{x1,x2,…,xn}和整数y,找出和等于y的X的子集Y。 一、算法思路 基本思想&am…

目录

​​​​

前言

一、算法思路

二、分析过程

三、代码实现

伪代码:

C++:

总结


前言

问题描述】考虑定义如下的PARTITION问题中的一个变型。给定一个n个整数的集合X={x1,x2,…,xn}和整数y,找出和等于y的X的子集Y。

一、算法思路

 基本思想:确定了解空间的组织结构后,回溯法从开始结点(根结点)出发,以深度优先方式搜索整个解空间。这个开始结点成为活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。

二、分析过程

重要❗❗❗

解的n元组:

解是一个包含0和1的n元组,其中每个元素对应集合X中对应位置的元素是否包含在子集Y中。

x的取值范围:
x为集合X中的每个元素,取值为正整数。

约束条件:
子集Y中元素之和等于给定整数y。

目标函数:
找出和等于y的X的子集Y。

三、代码实现

伪代码:

代码如下(示例):这个代码很重要!!!

INPUT:X集合(数组),  整数y
OUTPUT:X集合对应的n元布尔向量,使得对应的元素为1的xi之和为y。1. 初始化n元布尔向量c[n],值为-1;s=02. flag ←false3. k ←1 4. while k≥ 15.     while c[k]≤06.          c[k] ← c[k] +17.          if c[k]=1 then s=s+X[k]   8.            if s=y then set flag ←true, c[k+1]~c[n]←0且从两个while循环退出9.           else if s<y  then k k+110.     end while  11.     s=s-X[k]                12.     c[k] ←-113.      k ←k-114.  end while15.  if flag then output c16.  else output “no solution”

C++:

#include <iostream>
#include <vector>void subsetSumUtil(std::vector<int>& X, std::vector<int>& currSubset, std::vector<int>& result, int target, int currSum, int index) {if (currSum == target) {result = currSubset;return;}if (currSum > target || index >= X.size()) {return;}// Include the current elementcurrSubset.push_back(X[index]);subsetSumUtil(X, currSubset, result, target, currSum + X[index], index + 1);currSubset.pop_back();// Exclude the current elementsubsetSumUtil(X, currSubset, result, target, currSum, index + 1);
}std::vector<int> findSubsetSum(std::vector<int>& X, int y) {std::vector<int> result;std::vector<int> currSubset;subsetSumUtil(X, currSubset, result, y, 0, 0);return result;
}int main() {std::vector<int> X = {3, 34, 4, 12, 5, 2};int y = 9;std::vector<int> subset = findSubsetSum(X, y);if (!subset.empty()) {std::cout << "Subset with sum " << y << " exists: ";for (int num : subset) {std::cout << num << " ";}std::cout << std::endl;} else {std::cout << "No subset with sum " << y << " exists." << std::endl;}return 0;
}

结果:


总结

在考虑PARTITION问题的变种,即找出和等于给定整数y的X的子集Y时,可以使用回溯法来解决。算法的思路是通过搜索所有可能的子集组合,尝试包含或排除每个元素,直到找到合适的子集使得和等于给定整数y。算法的时间复杂度可能为指数级的O(2^n),因为需要搜索所有可能的子集。需要注意的是,回溯法的时间复杂度通常较高,特别是在面对大规模输入时。因此,在实际应用中需要考虑性能问题,并且可能需要对算法进行优化或者考虑其他更高效的解决方案。
 

http://www.hkea.cn/news/344197/

相关文章:

  • 北京哪家做网站优化账号权重查询
  • 大唐网站建设培训管理平台
  • 男人和女人在床上做那个网站网络营销策划推广公司
  • 深圳市招投标交易中心天津谷歌优化
  • 厦门园网站忱建设百度推广怎么联系
  • 网站优化页面动态网站建设
  • 做网站域名公司每日重大军事新闻
  • 网站改版数据来源表改怎么做外链百科
  • wordpress怎样做单页网站谷歌查询关键词的工具叫什么
  • 县城做二手车网站自己建网站需要多少钱
  • 有没有专业做挂的网站引流推广方案
  • 购物网站开发文献综述百度收录需要多久
  • 营销型企业网站建设案例设计公司网站
  • 国际外贸网站电子商务
  • 南充做网站 www.xinbay.com全国免费发布广告信息
  • 备案 个人网站软件开发培训中心
  • 江苏网站建设网络推广关键词批量调词 软件
  • 东莞企业网站建设价格怎么在百度发布免费广告
  • 网站后台地址一般是在线seo优化工具
  • 海曙区住房和建设局网站备案域名
  • 网站建设硬件环境志鸿优化设计答案
  • 网页游戏网址推荐宁波网站推广网站优化
  • 福建就福建省住房与城乡建设厅网站高端网站建设企业
  • 网站如何做seo规划app怎么开发出来的
  • 吴江住房和城乡建设局官方网站产品软文是什么
  • 公司网站制作设谷歌seo是什么职业
  • 北京品牌高端网站建设公司燕郊今日头条
  • 网站制作公司徐州宁波网站seo哪家好
  • 做网站基本费用大概需要多少全媒体运营师报考官网在哪里
  • 网站建设款属于什么科目营业推广策划