【算法设计与分析】集合相等问题——设计一个拉斯维加斯算法,对于给定的集合S和T,判定其是否相等。

news2024/9/21 12:22:46

目录

    • 一、问题描述
    • 二、问题分析
    • 三、运行结果
    • 四、源代码

一、问题描述

  给定两个集合S和T,试设计一个判定S和T是否相等的蒙特卡洛算法。
数据输入: 由文件input.txt给出输入数据。第1行有1个正整数n,表示集合的大小。接下来的2行,每行有n个正整数,分别表示集合S和T中的元素。
结果输出: 将计算结果输出到文件output.txt。若集合S和T相等则输出“YES”,否则输出”NO”。

二、问题分析

  f1()函数从集合 S 中随机选择的数组元素x,测试集合T中是否有与之相等的元素,若有,则算法返回true,否则返回 false,表明集合S和T不相等。f2()函数重复调用函数f1(),调用过程中若f1()返回 true则继续调用,否则可以判定集合S和T不相等,直接退出测试。其中time函数是获得系统时间的。
  打开input.txt文本,在第1行输入集合的大小,接下来的2行输入两个集合中的元素。
在这里插入图片描述

三、运行结果

  打开output.txt,若两个集合相等则输出“YES”,否则输出”NO”。由于输入的两个集合元素相同,所以输出“YES”。
在这里插入图片描述

四、源代码

#include<iostream>
#include<algorithm>
#include<fstream>
#include<time.h>
#include<math.h>
#define N 1000
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() {
	ifstream cin;
	cin.open("input.txt", ios::in);
	cin >> n;//集合长度 
	for (int i = 0; i < n; i++)
		cin >> S[i];
	for (int i = 0; i < n; i++)
		cin >> T[i];
	ofstream out;
	out.open("output.txt", ios::out);
	if (f2())
		out << "YES" << "\n";
	else
		out << "NO" << endl;
	cin.close();
	out.close();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路径规划算法:基于梯度优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于梯度优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于梯度优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法梯度…

关于线程池其他一些知识点的讨论

文章目录 前言一、线程池的几种任务队列1.ArrayBlockingQueue2.LinkedBlockingQueue3.DelayedWorkQueue4.SynchronousQueue 二、如何确定核心线程数&#xff1f;三、线程池的种类有哪些&#xff1f;1.newFixedThreadPool2.newSingleThreadExecutor3.newCacheThreadPool4.newSch…

AI掌绘艺术:揭秘Stable Diffusion华美图韵背后那些提示词的秘密

开篇 好了好了&#xff0c;我知道这个标题有点大&#xff0c;大得像我妈的锅一样。但是&#xff0c;我保证&#xff0c;当你读完这篇文章后&#xff0c;你不仅会明白我为什么敢用这样的标题&#xff0c;而且你也会想试试宝贵的AI画画方法。 首先&#xff0c;我要说&#xff0…

【ARM Coresight 系列文章 3.1 - ARM Coresight DP 对 AP 的访问 1】

文章目录 1.1 DP 中相关寄存器的介绍1.1.1 DPACC and APACC 寄存器1.1.2 DP SELECT 寄存器1.1.3 AP CSW寄存器1.1.4 AP TAR 寄存器1.1.5 AP DRW寄存器1.1.6 AP Banked Data registers 1.1 DP 中相关寄存器的介绍 如果DAP接入的是JTAG接口&#xff0c;那么将会通过APACC寄存器来…

idea中非常好用的配置

1、自动导包和优化多余的包 2、显示行号、方法之间的分隔符 3、忽略大小写进行提示 4、多个类不隐藏&#xff0c;多行显示 5、鼠标悬浮代码提示 6、加入类之前的稳定注释模板 好了&#xff0c;文章就分享到这里了&#xff0c;看完之后如果对你有所帮助&#xff0c;不要忘了点赞…

【机器学习核心总结】什么是长短时记忆网络(LSTM)

什么是长短时记忆网络(LSTM) RNN有一定的记忆能力&#xff0c;但不幸的是它只能保留短期记忆&#xff0c;在各类任务上表现并不好&#xff0c;那该怎么办? 人们将目光投向了自己&#xff0c;人类的记忆是有取舍的&#xff0c;我们不会记住每时每刻发生的所有事&#xff0c;会…

学无止境·MySQL④(多表查询)

多表查询试题 试题一1、创建表2、表中添加数据3、查询每个部门的所属员工4、查询研发部门的所属员工5、查询研发部和销售部的所属员工6、查询每个部门的员工数,并升序排序7、查询人数大于等于3的部门&#xff0c;并按照人数降序排序 试题一 1、创建表 use mydb3; – 创建部门…

技术文本的写作问题

最近刚参与一位大佬的重要文本撰写&#xff0c;也就3000字&#xff0c;磨了有几个月。 收获很多。关于技术写作&#xff0c;要写透&#xff0c;要写简单&#xff1b;要舍得放弃。 写透看起来简单&#xff0c;其实是最难的。一般人看到有字数限制就拼命压缩文本&#xff0c;把…

从零开始制作一个Web蜜罐扫描器(1)

从零开始制作一个Web蜜罐扫描器(0)_luozhonghua2000的博客-CSDN博客 蜜罐有什么特征 根据我们上面的描述,现在可以理解,蜜罐的功能是诱捕黑客. 诱捕黑客是利用的jsonp劫持技术来做。 jsonp劫持技术需要利用jsonp跨域请求很多其他的社交网站页面从而获得攻击者的相关信息。 因…

SpringBoot第20讲:SpringBoot如何对接口进行签名

SpringBoot第20讲&#xff1a;SpringBoot如何对接口进行签名 在以SpringBoot开发后台API接口时&#xff0c;会存在哪些接口不安全的因素呢&#xff1f;通常如何去解决的呢&#xff1f;本文是SpringBoot第20讲&#xff0c;主要介绍API接口有不安全的因素以及常见的保证接口安全的…

青岛大学_王卓老师【数据结构与算法】Week04_12_案例分析与实现2_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

Python+OpenCV人行道盲道边缘侦测识别

程序示例精选 PythonOpenCV人行道盲道边缘侦测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonOpenCV人行道盲道边缘侦测识别>>编写代码&#xff0c;代码整洁&#x…

使用 Jest 在 Visual Studio Code 中进行更好的单元测试

目录 前言&#xff1a; 使用 Jest 扩展显著改善测试流程 1.自动启动 Jest 测试 2. 显示单个失败/通过的测试用例 允许调试单元测试 在文件中显示代码覆盖率 结论 前言&#xff1a; Jest是一个流行的JavaScript测试框架&#xff0c;它提供了简洁、灵活和强大的工具来编写…

ChatGPT炒股:查询分析某个公募基金的持仓变化

如果很认同某个基金经理的投资理念&#xff0c;可以跟踪基金经理的持仓变化&#xff0c;可以获取一些投资的线索。手动操作也可以实现&#xff0c;但略微麻烦&#xff0c;如果利用ChatGPT写一个跟踪程序&#xff0c;就方便多了。 下面以汇丰晋信副总经理、投资总监、知名基金经…

深入理解java虚拟机精华总结:线程安全与锁优化

深入理解java虚拟机精华总结&#xff1a;线程安全与锁优化 线程安全Java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立 线程安全的实现方法互斥同步非阻塞同步无同步方案 锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁 线程安全 当多个线程同时访问…

MF30:VBA_清除Excel缓存

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

【云原生|Docker系列第1篇】什么?你竟然还不知道Docker?

欢迎来到Docker入门系列的第一篇博客&#xff01;在当今的应用开发和部署领域&#xff0c;Docker已经成为一项极具吸引力的关键技术。本篇博客将为您介绍Docker的基本概念和作用&#xff0c;并解释为什么它成为现代应用开发和部署的终极利器。无论您是开发人员、系统管理员还是…

Java小白的学习之路——day11(静态)

目录 一、java的内存分析 1.java的内存区域 二、静态static 静态属性 静态方法 类加载 什么是类加载&#xff1f; 什么是触发类加载&#xff1f; 一、java的内存分析 1.java的内存区域 java的内存区域有五个区域 i.堆区&#xff1a;存放new的对象、成员遍历、常量池&a…

Yolov5-Lite + Sort算法实现边缘目标跟踪

文章目录 前言项目结构Sort算法实现卡尔曼跟踪器工具类多目标跟踪器 整合 前言 昨天挖了个坑&#xff0c;那么今天的话把坑填上&#xff0c;只要是实现Sort算法和Yolov5-Lite的一个整合。当然先前的话&#xff0c;我们在Yolov3–Tiny的时候&#xff0c;也做了一个&#xff0c;…

Netty实战(一) netty入门之创建echo服务器

目录 一、理论知识1. 网络协议TCP/UDP2. netty简介3. 依赖4. netty核心类介绍 二、开发实战1. 服务端2. 客户端 demo源码参考 一、理论知识 1. 网络协议TCP/UDP TCP、UDP协议属于七层协议中传输层的协议&#xff0c;这两种主流协议的差异&#xff1a; TCP是一个面向连接的、…