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

php装修门户网站源码网站放在服务器上

php装修门户网站源码,网站放在服务器上,青岛模板建站多少钱,网站设计沟通文章目录 前言举例: 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规…

文章目录

  • 前言
    • 举例:
  • 一、
    • 1.构造函数
    • 2.查找元素属于哪个集合FindRoot
    • 3.将两个集合归并成一个集合Union
    • 4.查找集合数量SetCount
  • 二、源码


前言

需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-find set)。

举例:

学生小分队s1={0,6,7,8},成都学生小分队s2={1,4,9},武汉学生小分队s3={2,3,5}就相互认识了,10个人形成了三个小团体。假设右三个群主0,1,2担任队长,负责大家的出行。
在这里插入图片描述

在这里插入图片描述

西安小分队中8号同学与成都小分队1号同学奇迹般的走到了一起,两个
小圈子的学生相互介绍,最后成为了一个小圈子:
在这里插入图片描述

仔细观察数组中内融化,可以得出以下结论:

  1. 数组的下标对应集合中元素的编号
  2. 数组中如果为负数,负号代表根,数字代表该集合中元素个数
  3. 数组中如果为非负数,代表该元素双亲在数组中的下标

一、

1.构造函数

UnionFindSet(size_t size):_set(size,-1)//数组中初始化为-1//数组的下标对应集合中元素的编号//数组的内容如果是非负数代表这个元素的根的下标//数组内容为负数,代表这个数字为根,绝对值为这棵树的大小{}

2.查找元素属于哪个集合FindRoot

size_t FindRoot(int x) {//. 查找元素属于哪个集合while (_set[x] >= 0) {x = _set[x];}//找到非负的数,这个数的下标即为根的下标return x;}

3.将两个集合归并成一个集合Union

void Union(int x1, int x2) {//将两个集合归并同一个集合//将元素x2合并进x1int root1 = FindRoot(x1);int root2 = FindRoot(x2);if (root1 != root2) {//保证两个元素不在同一个集合中_set[root1] += _set[root2];// x2根的内容为负数绝对值为这棵树的数量//把x2归并到x1所在集合中//x1所在集合的大小发生变化_set[root2] = root1;//x2的根发生变化}}

4.查找集合数量SetCount

size_t SetCount() {//统计集合数量(有多少棵树)int count = 0;for (size_t i = 0; i < _set.size(); i++) {if (_set[i] < 0) {count++;}}//负数的数量即根的数量即集合的数量return count;}

二、源码

class UnionFindSet {
public:UnionFindSet(size_t size):_set(size,-1)//数组中初始化为-1//数组的下标对应集合中元素的编号//数组的内容如果是非负数代表这个元素的根的下标//数组内容为负数,代表这个数字为根,绝对值为这棵树的大小{}size_t FindRoot(int x) {//. 查找元素属于哪个集合while (_set[x] >=0) {x = _set[x];}//找到非负的数,这个数的下标即为根的下标return x;}void Union(int x1, int x2) {//将两个集合归并同一个集合//将元素x2合并进x1int root1 = FindRoot(x1);int root2 = FindRoot(x2);if (root1 != root2) {//保证两个元素不在同一个集合中_set[root1] += _set[root2];// x2根的内容为负数绝对值为这棵树的数量//把x2归并到x1所在集合中//x1所在集合的大小发生变化_set[root2] = root1;//x2的根发生变化}}size_t SetCount() {//统计集合数量(有多少棵树)int count = 0;for (size_t i = 0; i < _set.size(); i++) {if (_set[i] < 0) {count++;}}//负数的数量即根的数量即集合的数量return count;}private:vector<int> _set;};
http://www.yayakq.cn/news/17487/

相关文章:

  • 怎样在网站上做有效的广告投放制作重庆城市的网页
  • 建立网店wordpress文章分页链接优化
  • 网站策划专员招聘WordPress漏洞在线扫描
  • 网站与数据库的联系做网站盈利方式
  • 建设品牌公司网站运城网站建设多少钱
  • 广州网站制作怎么做wordpress分级访问权限
  • 营销加盟网站建设美食网站的建设背景
  • 华为云速建站教程精仿36氪(36kr)wordpress主题
  • 织梦网站后台如何做百度优化怎么对页面颜色进行设计
  • 如何做闲置物品自己的网站凌晨网站建设公司
  • 省建设厅网站安徽合肥工程建设交易中心网站
  • 受欢迎的江苏网站建设河南宏业建设管理有限公司网站
  • 广东网站建设哪家专业做茶网站
  • 个人网站推广平台大全百度手机助手下载安装最新版
  • 长春网站建设方案优化公司注册资金可以乱写吗
  • 企业网站建设管理视频wordpress在vps上安装
  • 免费外贸网站源码永州企业网站开发
  • 做邀请函的网站做企业网站设计方案
  • 网站建设项目模板上海关键词优化的技巧
  • 南阳网站建设培训班与做网站有关的参考文献
  • 网站html下载器长沙招聘网最新招聘信息
  • 苏州模板做网站工信部网站备案举报
  • 库尔勒北京网站建设中国建设集团官网
  • 一个空间怎么放两个网站吗wordpress 自己写的网页
  • 高端网站开发公司高端模板网站建设公司
  • 营销网站建设都是专业技术人员吗做复印机的模板网站
  • 如何创建网站内容企业做网站需要哪些材料
  • 有什么做ppt的网站吗360建筑网如何删除自己的信息
  • 济南市住房和城乡建设局网站深圳英文网站推广
  • 聊天网站开发网站建设成都