问题描述

给定2个集合 S 和 T ,试设计一个判定 S 和 T 是否相等的蒙特卡罗算法。

题目分析

要求用蒙特卡罗算法进行求解,那么思路就是:随机选择集合 S 中的元素与集合 T 中的元素进行比较,若随机选择很多次都能从集合T中找到与之对应的相等,则集合 S 和 T 相等。
蒙特卡罗知识可以参考这个博主的博文,链接:https://blog.csdn.net/Blackoutdragon/article/details/117511804

算法设计:

  1. f1():从集合 S 中随机选择的数组元素 x ,测试集合 T 中是否有与之相等的元素,若有,则算法返回true,否则返回 false,表明集合 S 和 T 不相等。
  2. f2():重复调用函数f1(),调用过程中若f1()返回 true 则继续调用,否则可以判定集合 S 和 T 不相等,直接退出测试。

补充:srandtime的用法

srand函数:
传入一个unsigned的参数,表示初始化随机种子,如果随机种子一样,那么输出的随机数(rand()的返回值)也一样。
time函数:
time函数是获得系统时间的。
如果想要随机数每次不重复,可以使用系统时间来初始化,即调用函数time,然后将其返回值time_t型数据转化为unsigned,再作为随机种子传给 srand 函数,即: srand((unsigned) time(&t));
还有一个用法,不需要定义time_t型 t 变量,直接传入一个空指针即可, srand((unsigned) time(NULL)); ,因为程序中往往并不需要经过参数获得的数据。

AC代码

#include<iostream>
#include<algorithm>
#include<time.h>
#include<math.h>
#define N 100000
using namespace std;
int S[N],T[N];
int n;
double e=0.00001;bool f1() {//单独一次 srand((unsigned)time(NULL));//用随机函数rand求0~n-1的随机数index int index=rand()%n-1;//数组索引 for(int j=0; j<n; j++) {//找寻数组 T 中是否含有S[index] if(T[j]==S[index])return true;}return false;
}
bool f2() {int x=(int)ceil(log(1/e));for(int i=1; i<=x; i++) {//找很多次if(!f1())//只要找到一个不相符的结果,说明S和T就是不想等的return false;}return true;
}
int main() {cin>>n;//集合长度 for(int i=0; i<n; i++)cin>>S[i];for(int i=0; i<n; i++)cin>>T[i];if(f2())cout<<"Yes"<<"\n";elsecout<<"No"<<endl;
}

集合相等问题-蒙特卡罗算法相关推荐

  1. 算法设计与分析——蒙特卡罗算法判定两个集合是否相等

    文章目录 题目描述 思路分析 蒙特卡罗知识回顾 概述 基本概念 具体问题具体分析 具体代码的运行 分析与总结 题目描述 给定两个集合S和T,设计一个判定S和T是否相等的蒙特卡罗算法 思路分析 蒙特卡罗 ...

  2. 随机算法-蒙特卡罗算法

    在论文中多次看到ε-approximation概念,然后百度发现也很少说这个的.只有在其他论文里面有讲到.这里就是记录下目前所了解的比较浅显的理解. 可以比较论文基于k-means的(1+ε)近似算法 ...

  3. 0049算法笔记——【随机化算法】蒙特卡罗算法,主元素问题,素数测试问题

    1.蒙特卡罗算法 基本概述        蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法.传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地 ...

  4. 随机算法——蒙特卡罗算法——模式匹配问题

    1 简单介绍 2 随机算法 3 指纹计算 4 计算步骤 假匹配 当Ip(Y)和Ip(X(j))不相等,那么Y和X(j)一定不匹配: 但是逆命题是错误的,即两指纹相同,X与X(j)也不一定匹配,即为假匹 ...

  5. OpenMP 编程实例(蒙特卡罗算法)

    有关clock()函数 1,clock()函数在头文件#include<time.h>中 2,clock()函数的返回值类型为clock_t.clock_t其实是long,即长整形. cl ...

  6. 双色球python十种算法_python : 蒙特卡罗算法 应用于双色球

    参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法 http://www.gdfc.org.cn/datas/history/twocolorball/history_1. ...

  7. 蒙特卡罗算法与拉斯维加斯算法

    http://www.zhihu.com/question/20254139 太数学的东西就不说了,只用通俗唱法回答楼主的问题. 蒙特卡罗算法并不是一种算法的名称,而是对一类随机算法的特性的概括.媒体 ...

  8. 字符串集合中相互包含关系算法

    字符串集合中相互包含关系算法 先介绍下使用场景,源文件是一个excel表格,要根据某一列的值生成正则表达式,为保证正则表达式的准确性,被包含的数据肯定是不能直接生成正则表达式的,例如,产科和妇产科,如 ...

  9. 蒙特卡罗算法是什么?

    作者:孙天齐 链接:https://www.zhihu.com/question/20254139/answer/33572009 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

最新文章

  1. ETSI MEC — 多接入边缘计算
  2. 关于单链表,二叉树,图,查找和排序的软件编程
  3. 【HDU - 1013 】Digital Roots (大数模拟)
  4. STM32驱动LCD原理
  5. python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法
  6. gdb 行号断点调试
  7. NAT配置正确,但不能ping通外网的原因
  8. 万字详文阐释程序员修炼之道
  9. MacBook使用U盘重装系统
  10. 第六章 XML 拨号方案
  11. 硕正插件安装不上(重置之后还不行)
  12. Linux系统信息收集
  13. Scaner和顺序语句
  14. 高通发布了全球最领先的5G基带芯片,不过华为将很快反超
  15. C++语言——求圆柱表面积
  16. java 断言 assert 初步使用:断言开启、断言使用
  17. 二级c语言会考文件打开,2017计算机二级C语言文件知识点
  18. 管理者应该会讲的68个超级经典小故事
  19. 推荐几本游戏策划的书
  20. 为什么文本顺序打乱HashingTF不会改变

热门文章

  1. Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)
  2. 毕业答辩PPT高分诀窍分享
  3. 五问Nerf | 简单易懂的神经辐射场入门介绍
  4. 生态扩张策略与众不同的 IC 公链,现在发展到了哪一步?
  5. 2019-2020 ICPC Asia Xuzhou Regional Contest【徐州现场赛】
  6. 这几张图算是把Java的知识点囊括了
  7. 虚拟机与本地连接不上时,该怎么办
  8. Python Qt 一个案例
  9. iOS APP 架构设计
  10. 重启服务器后磁盘显示空余变大,(已解决)开机后发现服务中Superfetch服务项会导致磁盘利用率在85%以上,重启后依旧...