集合相等问题-蒙特卡罗算法
问题描述
给定2个集合 S 和 T ,试设计一个判定 S 和 T 是否相等的蒙特卡罗算法。
题目分析
要求用蒙特卡罗算法进行求解,那么思路就是:随机选择集合 S 中的元素与集合 T 中的元素进行比较,若随机选择很多次都能从集合T中找到与之对应的相等,则集合 S 和 T 相等。
蒙特卡罗知识可以参考这个博主的博文,链接:https://blog.csdn.net/Blackoutdragon/article/details/117511804
算法设计:
f1()
:从集合 S 中随机选择的数组元素 x ,测试集合 T 中是否有与之相等的元素,若有,则算法返回true,否则返回 false,表明集合 S 和 T 不相等。f2()
:重复调用函数f1()
,调用过程中若f1()
返回 true 则继续调用,否则可以判定集合 S 和 T 不相等,直接退出测试。
补充:srand
和time
的用法
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;
}
集合相等问题-蒙特卡罗算法相关推荐
- 算法设计与分析——蒙特卡罗算法判定两个集合是否相等
文章目录 题目描述 思路分析 蒙特卡罗知识回顾 概述 基本概念 具体问题具体分析 具体代码的运行 分析与总结 题目描述 给定两个集合S和T,设计一个判定S和T是否相等的蒙特卡罗算法 思路分析 蒙特卡罗 ...
- 随机算法-蒙特卡罗算法
在论文中多次看到ε-approximation概念,然后百度发现也很少说这个的.只有在其他论文里面有讲到.这里就是记录下目前所了解的比较浅显的理解. 可以比较论文基于k-means的(1+ε)近似算法 ...
- 0049算法笔记——【随机化算法】蒙特卡罗算法,主元素问题,素数测试问题
1.蒙特卡罗算法 基本概述 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法.传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地 ...
- 随机算法——蒙特卡罗算法——模式匹配问题
1 简单介绍 2 随机算法 3 指纹计算 4 计算步骤 假匹配 当Ip(Y)和Ip(X(j))不相等,那么Y和X(j)一定不匹配: 但是逆命题是错误的,即两指纹相同,X与X(j)也不一定匹配,即为假匹 ...
- OpenMP 编程实例(蒙特卡罗算法)
有关clock()函数 1,clock()函数在头文件#include<time.h>中 2,clock()函数的返回值类型为clock_t.clock_t其实是long,即长整形. cl ...
- 双色球python十种算法_python : 蒙特卡罗算法 应用于双色球
参考书:算法设计与分析 王晓东 编著 :第7章 概率算法 7.5 蒙特卡罗算法 http://www.gdfc.org.cn/datas/history/twocolorball/history_1. ...
- 蒙特卡罗算法与拉斯维加斯算法
http://www.zhihu.com/question/20254139 太数学的东西就不说了,只用通俗唱法回答楼主的问题. 蒙特卡罗算法并不是一种算法的名称,而是对一类随机算法的特性的概括.媒体 ...
- 字符串集合中相互包含关系算法
字符串集合中相互包含关系算法 先介绍下使用场景,源文件是一个excel表格,要根据某一列的值生成正则表达式,为保证正则表达式的准确性,被包含的数据肯定是不能直接生成正则表达式的,例如,产科和妇产科,如 ...
- 蒙特卡罗算法是什么?
作者:孙天齐 链接:https://www.zhihu.com/question/20254139/answer/33572009 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
最新文章
- ETSI MEC — 多接入边缘计算
- 关于单链表,二叉树,图,查找和排序的软件编程
- 【HDU - 1013 】Digital Roots (大数模拟)
- STM32驱动LCD原理
- python获取cookie值的方法_Python获取Cookie、设置Cookie的N种方法
- gdb 行号断点调试
- NAT配置正确,但不能ping通外网的原因
- 万字详文阐释程序员修炼之道
- MacBook使用U盘重装系统
- 第六章 XML 拨号方案
- 硕正插件安装不上(重置之后还不行)
- Linux系统信息收集
- Scaner和顺序语句
- 高通发布了全球最领先的5G基带芯片,不过华为将很快反超
- C++语言——求圆柱表面积
- java 断言 assert 初步使用:断言开启、断言使用
- 二级c语言会考文件打开,2017计算机二级C语言文件知识点
- 管理者应该会讲的68个超级经典小故事
- 推荐几本游戏策划的书
- 为什么文本顺序打乱HashingTF不会改变
热门文章
- Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)
- 毕业答辩PPT高分诀窍分享
- 五问Nerf | 简单易懂的神经辐射场入门介绍
- 生态扩张策略与众不同的 IC 公链,现在发展到了哪一步?
- 2019-2020 ICPC Asia Xuzhou Regional Contest【徐州现场赛】
- 这几张图算是把Java的知识点囊括了
- 虚拟机与本地连接不上时,该怎么办
- Python Qt 一个案例
- iOS APP 架构设计
- 重启服务器后磁盘显示空余变大,(已解决)开机后发现服务中Superfetch服务项会导致磁盘利用率在85%以上,重启后依旧...