数据结构第15周 :( 求第k大的数 + 查找3个数组的最小共同元素 + 查找一个循环顺序数组的最小元素 + Crazy Search)

news/2024/4/19 9:14:13/文章来源:https://blog.csdn.net/qq_51800570/article/details/129186053

目录

  • 求第k大的数
  • 查找3个数组的最小共同元素
  • 查找一个循环顺序数组的最小元素
  • Crazy Search

求第k大的数

【问题描述】 求n个数中第k大的数
【输入形式】 第一行n k,第二行为n个数,都以空格分开
【输出形式】 第k大的数
【样例输入】
10 3
18 21 11 26 12 2 9 33 43 28

【样例输出】

28

【评分标准】时间复杂度大于等于O(kn)的方法得一半分,时间复杂度小于等于O(nlog2k)得满分。

【提示】

  1. 分析各种排序或查找算法的优缺点,分析解决具体问题的时间复杂度,进而找出更高效的算法。

  2. n与k的值不同,不同算法的效率也会有影响,如n=10, k=9时,可以找第2小的数。

#include<iostream>
using namespace std;int QSort(int a[], int left, int right, int rk)
{int low = left;int high = right;int flag = a[low];while(low < high){while(a[high] <= flag && low < high){high --;}a[low] = a[high];while(a[low] >= flag && low < high){low ++;}a[high] = a[low];}a[low] = flag;if(low == rk - 1)return a[low];else if(low > rk - 1)return QSort(a, left, low - 1, rk);elsereturn QSort(a, low + 1, right, rk - low);
}
int main()
{int n, k;cin>>n>>k;int i = n;int j = -1;int a[n];while(i --){cin>>a[++ j];}cout<<QSort(a, 0, n - 1, k);
}

查找3个数组的最小共同元素

【问题描述】查找3个数组的最小共同元素
【输入形式】三个数组,均以0代表输入结束
【输出形式】最小共同元素
【样例输入】

1 3 5 7 8 9 0

2 4 6 8 10 12 14 16 18 0

-1 3 8 16 18 19 20 168 198 0
【样例输出】

8

#include<iostream>
using namespace std;
int a[1000], b[1000], c[1000];
int main()
{int i = 0;int num = 0;for(i = 0; ; i ++){cin>>num;if(num == 0) break;a[i] = num; //i取到数组最后一个下标}int alen = i;for(i = 0; ; i ++){cin>>num;if(num == 0) break;b[i] = num; //i取到数组最后一个下标}int blen = i;for(i = 0; ; i ++){cin>>num;if(num == 0) break;c[i] = num; //i取到数组最后一个下标}int clen = i;int pa = 0, pb = 0, pc = 0;while(pa <= alen && pb <= blen && pc <= clen){if(a[pa] == b[pb] && b[pb] == c[pc]){cout<<a[pa];break;}while(a[pa] < b[pb] && pa <= alen){pa ++;}while(b[pb] < a[pa] && pb <= blen){pb ++;}while(c[pc] < b[pb] && pc <= clen){pc ++;}}return 0;
}

查找一个循环顺序数组的最小元素

【问题描述】以循环排列的一组顺序的数据,存储在一维数组中,查找最小元素并输出。
【输入形式】一组数据,以0结束输入
【输出形式】最小元素
【样例输入】7 9 11 1 3 5 0
【样例输出】1

#include<iostream>
#define N 100
using namespace std;int FindMin(int a[], int low, int high)
{int mid = (low + high) / 2;if(a[low] < a[high])return a[low];else{if(a[low] < a[mid]){return FindMin(a, mid + 1, high);}else if(a[low] == a[mid]) return a[low];else{return FindMin(a, low + 1, mid);}}
}
int main()
{int a[N];int i = 0;int num = 0;for(i = 0; ;i ++){cin>>num;if(num == 0) break;a[i] = num;}cout<<FindMin(a, 0, i - 1); //i取不到return 0;
}

Crazy Search

【题目来源】1200 – Crazy Search (poj.org) 请前往此链接提交检测代码

Description

Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different substrings of a given size that exist in the text. As you soon will discover, you really need the help of a computer and a good algorithm to solve such a puzzle.
Your task is to write a program that given the size, N, of the substring, the number of different characters that may occur in the text, NC, and the text itself, determines the number of different substrings of size N that appear in the text.

As an example, consider N=3, NC=4 and the text “daababac”. The different substrings of size 3 that can be found in this text are: “daa”; “aab”; “aba”; “bab”; “bac”. Therefore, the answer should be 5.

Input

The first line of input consists of two numbers, N and NC, separated by exactly one space. This is followed by the text where the search takes place. You may assume that the maximum number of substrings formed by the possible set of characters does not exceed 16 Millions.

Output

The program should output just an integer corresponding to the number of different substrings of size N found in the given text.

Sample Input

3 4
daababac
Sample Output

5

#include<iostream>
#include<string>
#include<string.h>
using namespace std;const int N = 1600000; // 定义16000000为什么不能运行int main()
{int res = 0;string s;int sonlen;int sysnum; //字符串中可能出现的字符种类数cin>>sonlen;cin>>sysnum;cin>>s;int slen = s.length(); //调用string类的类函数int i = 0;bool Hash[N];memset(Hash, 0, sizeof(Hash));for(i = 0; i <= slen - sonlen; i ++){string temp = s.substr(i,3); //截取字符串片段int pos = 0;int j = 0;for(j = 0; j < sonlen; j ++){int k = 1;int t = int(temp[j]);for(k = j + 1; k <= sysnum; k ++){t *= sysnum;}pos += t;}if(!Hash[pos]){Hash[pos] = 1;res ++;}}cout<<res;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apifox-比postman更优秀的接口自动化测试平台

一、Apifox介绍 Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台&#xff0c;定位 Postman Swagger Mock JMeter。通过一套系统、一份数据&#xff0c;解决多个系统之间的数据同步问题。只要定义好 API 文档&#xff0c;API 调试、API 数据 Mock、A…

你真的需要文档管理软件吗?

什么是文档管理软件&#xff1f; 文档管理软件 (DMS) 是一种数字解决方案&#xff0c;可帮助组织处理、捕获、存储、管理和跟踪文档。 通过严格管理您的关键业务信息&#xff0c;您可以开发以稳定、可预测、可衡量的方式启动、执行和完成的流程。 如果没有功能齐全的文档管理软…

从事Python自动化测试,30岁熬到月薪20K+,分享我的多年面试经…

年少不懂面试经&#xff0c;读懂已是测试人。 大家好&#xff0c;我是小码哥&#xff0c;一名历经沧桑&#xff0c;看透互联网行业百态的测试从业者&#xff0c;经过数年的勤学苦练&#xff0c;精钻深研究&#xff0c;终于从初出茅庐的职场新手成长为现在的测试老鸟&#xff0…

zabbix4.0安装部署

目录 1.1、添加 Zabbix 软件仓库 1.2、安装 Server/proxy/前端 1.3、创建数据库 1.4、导入数据 1.5、为 Zabbix server/proxy 配置数据库 1.6、 启动 Zabbix server 进程 1.7、zabbix前端配置 SELinux 配置 1.8、安装 Agent 1.9、启动zabbix 2.0、访问zabbix 1.1、添加…

ThinkPHP ^6图片操作进阶

图片裁剪、缩略、水印不再是TP框架系统内置的功能&#xff0c;需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行&#xff1a; composer require topthink/think…

mybatis-plus分页方式

拦截器(分页插件) 一 方式1&#xff1a;XxxMapper.selectPage 1 selectPage(page, null) 概述 MyBatisPlus中提供的&#xff08;自带的&#xff09;分页插件&#xff0c;非常简单&#xff0c;只需要简单的配置就可以实现分页功能。详细步骤&#xff1a; 第一步&#xff1a;&…

【Tips】通过背数据了解业务

学习资料&#xff1a;做了三年数据分析&#xff0c;给你的几点建议 1. 通过背数据了解业务 原文&#xff1a; 总结&#xff1a; 方法&#xff1a;每天早上去到公司第一件事情就是先背一遍最新的各种指标。原理&#xff1a; 数据敏感性就是建立在对数据的了解和熟悉上。业务的…

一文带你了解排序算法

排序算法平均时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2)希尔排序O(n1.5)快速排序O(N*logN)归并排序O(N*logN)堆排序O(N*logN)基数排序O(d(nr)) 一. 冒泡排序(BubbleSort) 1、基本思想&#xff1a;两个数比较大小&#xff0c;较大的数下沉&#xff0c;较小的数冒起来。…

Spring boot开启定时任务的三种方式(内含源代码+sql文件)

Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09; 源代码sql文件下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87486580 目录Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09;源代码…

FreeRTOS入门(02):任务基础使用与说明

文章目录目的创建任务任务调度任务控制延时函数任务句柄获取与修改任务优先级删除任务挂起与恢复任务强制任务离开阻塞状态空闲任务总结目的 任务&#xff08;Task&#xff09;是FreeRTOS中供用户使用的最核心的功能&#xff0c;本文将介绍任务创建与使用相关的基础内容。 本…

Tina_Linux_启动优化_开发指南

文章目录Tina_Linux_启动优化_开发指南1 概述2 启动速度优化简介2.1 启动流程2.2 测量方法2.2.1 printk time2.2.2 initcall_debug2.2.3 bootgraph.2.2.4 bootchart2.2.5 gpio 示波器.2.2.6 grabserial.2.3 优化方法2.3.1 boot0启动优化2.3.1.1 非安全启动.2.3.1.2 安全启动2.3…

关于selenium的等待

目录 隐式等待 显式等待 注意事项 隐式等待 简单来说&#xff1a;在规定的时间范围内&#xff0c;轮询等待元素出现之后就立即结束。 如果在规定的时间范围内&#xff0c;元素仍然没有出现&#xff0c;则会抛出一个异常【NoSuchElementException】&#xff0c;脚本停止运行…

2023上半年软考各省份报名时间已公布!

截止至目前&#xff0c;共有2个省市公布了2023上半年软考报名时间&#xff0c;一起来看看吧~ 一、2023上半年软考考试事项 分数线&#xff1a;所有科目成绩全部在45分以上&#xff08;含45分&#xff09;通过考试&#xff1b; 出成绩时间&#xff1a;预计在7月中旬&#xff1…

企业知识管理常见的误区及解决方案

在企业信息化的背景下&#xff0c;越来越多的首席信息官&#xff08;CIO&#xff09;承担着促进组织知识管理实施的责任。然而&#xff0c;从实践的角度来看&#xff0c;虽然我国大多数知识管理实施项目都取得了一定的成果&#xff0c;但与预期有很大的不同&#xff0c;甚至许多…

Spring Cloud Nacos源码讲解(三)- Nacos客户端实例注册源码分析

Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><…

腾讯开源的 hel 提供了加载远程模块的能力,谈谈它的实现原理

腾讯开源的 hel&#xff0c;提供了一种运行时引入远程模块的能力&#xff0c;模块部署在 CDN&#xff0c;远程模块发布后&#xff0c;不需要重新构建发布&#xff0c;就能生效。 个人觉得它的实现原理非常的不错&#xff0c;因此分享给大家。 远程模块可以作为微模块&#xf…

ASEMI高压MOS管60R380参数,60R380特征,60R380应用

编辑-Z ASEMI高压MOS管60R380参数&#xff1a; 型号&#xff1a;60R380 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;600V 栅源电压&#xff08;VGS&#xff09;&#xff1a;20V 漏极电流&#xff08;ID&#xff09;&#xff1a;11A 功耗&#xff08;PD&#x…

手写一个文件上传demo

背景 最近闲来无事&#xff0c;同事闻了一下上传文件的基本操作&#xff0c;如何用文件流来实现一个文件的上传功能 基本概念 流&#xff08;Stream&#xff09;是指在计算机的输入输出操作中各部件之间的数据流动。可以按照数据传输的方向&#xff0c;将流可分为输入流和输出…

矩阵通高效监管企业新媒体矩阵,账号集中管理与运营数据分析

越来越多的企业在全网布局旗下账号&#xff0c;希望通过社媒传播矩阵&#xff0c;以内容连接产品与用户&#xff0c;达成增加销售线索或扩大品牌声量的目的。构建矩阵的优势在于&#xff0c;内容能多元发展&#xff0c;聚集不同平台流量&#xff1b;多种营销渠道自主掌控&#…

渗透测试之端口探测实验

渗透测试之端口探测实验实验目的一、实验原理1.1 端口1.2 服务二、实验环境2.1 操作机器2.2 实验工具三、实验步骤1. 使用netstat手动探测指定服务2. 使用namp工具进行端口扫描2. 使用ssh命令总结实验目的 了解端口、服务的基本概念熟悉手工探测方式netstat命令的使用掌握扫描…