国教 2019级 算法设计与分析 作业集锦(期末作业)

2023-11-01

7-1 寻找第k小的数 (20 分)

给定若干整数,请设计一个高效的算法,确定第k小的数。

输入格式:
测试数据有多组,处理到文件尾。每组测试数据的第1行输入2个整数n,k(1≤k≤n≤1000000)。第2行输入n个整数,每个数据的取值范围在0到1000000之间。

输出格式:
对于每组测试,输出第k小的数。

输入样例:

5 3
1 2 2 2 1
9 3
1 2 3 4 5 6 9 8 7

输出样例:

2
3

提示:
如果提交后超时,请注意需要设计的是高效的算法!如果你初学《数据结构》,暂时设计不出来,请学完相关知识再回头来做。
也可以使用STL之sort、nth_element函数求解。
另外,由于输入数据特别多,为减少输入数据的耗时,建议使用以下的输入外挂函数:

void scan_d(int &num)    
{
        char in;
        in=getchar();
        while(in<'0'||in>'9') in=getchar(); 
        num=in-'0';
        while(in=getchar(),in>='0'&&in<='9'){num*=10,num+=in-'0';}
}

调用方法如下:

int n;
scan_d(n);

解答:(简单sort)

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,k;
	int a[1000000];
	while(cin>>n){
		scanf("%d",&k);
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		sort(a,a+n);
		printf("%d\n",a[k-1]);
	}
	return 0;
}

7-2 约瑟夫环 (20 分)

有n个人围成一圈(编号为1~n),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的位置是多少号?

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(5≤n≤100)。

输出格式:
对于每组测试,输出最后剩下那个人的编号。

输入样例:

10
28
69

输出样例:

4
23
68

解答:(#有点难)

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	while ((scanf("%d", &n) != EOF)) {
		if (n == 0)
			break;
		int sum = 0;
		for (int i = 2; i < n + 1; i++) {
			sum = (sum + 3) % i;
		}
		cout << sum + 1 << endl;
	}
	return 0;
}

7-3 英文单词排序 (20 分)

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:
输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

blue
red
yellow
green
purple
#

输出样例:

red blue green yellow purple 

解答:(注意一定要用stable_sort) 感兴趣的同学可以在下面查查,这里就不赘述了。

#include <bits/stdc++.h>
using namespace std;
bool smp(string s, string b) {
	return s.size() < b.size();
}
string s1[21];
int main() {
	int i = 0;
	string s;
	cin >> s;
	while (s != "#") {
		s1[i] = s;
		i++;
		cin >> s;
	}
	stable_sort(s1, s1 + i, smp);
	for ( int a = 0; a < i; a++) {
		cout << s1[a] << " ";
	}
	return 0;
}

7-4 括号匹配 (20 分)

给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入格式:
输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:
如果括号配对,输出yes,否则输出no。

输入样例1:

sin(10+20)

输出样例1:

yes

输入样例2:

{[}]

输出样例2:

no

解答 (栈的使用)

#include <bits/stdc++.h>
using namespace std;

string solve(string str) {
	stack<char> st;
	int i = 0;
	while (i < str.size()) {
		if (str[i] == '(' || str[i] == '{' || str[i] == '[')
			st.push(str[i]);
		else if (str[i] == ')') {
			if (st.size() == 0 || st.top() != '(') {
				return "no";
			}
			st.pop();
		} else if (str[i] == ']') {
			if (st.size() == 0 || st.top() != '[') {
				return "no";
			}
			st.pop();
		} else if (str[i] == '}') {
			if (st.size() == 0 || st.top() != '{') {
				return "no";
			}
			st.pop();
		}

		i++;
	}
	if (st.size() == 0)
		return  "yes";
	else
		return "no";
}


int main() {
	string str;
	//cin >> str;
	getline(cin, str);
	cout << solve(str);
	return 0;
}


7-5 函数的递归调用 (20 分)

有n个人坐在一起,第n个人比第n-1个人大2岁,第n-1个人比第n-2个人大2岁,以此类推,……,第1个人是10岁。请问第n个人年龄多大?

输入格式:
输入一个整数表示第几个人。

输出格式:
输出第n个人是m岁。

输入样例:

5

输出样例:

Number 5 is 18 age!

解答:(递归 找规律)

#include <bits/stdc++.h>
using namespace std;

int f(int n) {
	if (n == 1)
		return 10;
	return f(n - 1) + 2;
}

int main() {
	int n;
	cin >> n;
	cout << "Number " << n << " is " << f(n) << " age!";
	return 0;
}```

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国教 2019级 算法设计与分析 作业集锦(期末作业) 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 英飞凌单片机编译器 TASKING TriCore Eclipse IDE 新建静态库工程

    前言 这篇介绍一下如何使用 TASKING 新建一个静态库的工程 编译成一个静态库 最后链接至应用程序工程中进行编译调试 编译成静态库也能debug界面调试 也可以打断点操作等 前提是保证源码和编译的静态库源码一致 且含有调试信息 下载 A
  • Android常用正则

    1 匹配以特定字符开头 特定字符结尾 private const val AT s S 匹配以 打头 空格结尾的字符 2 匹配手机号 const val REG PHONE 1 0 9 10 3 匹配判断是否汉字字母数字和 const va
  • Centos 7 freeradius 搭建企业wifi认证服务

    Centos 7 搭建Wpa认证服务 关键字 freeradius wpa eap 参考 http www racksam com 2017 03 02 centos7 install freeradius 路由器设置为WPA WPA2企业
  • 阿里Sentinel控制台源码修改-对接Apollo规则持久化

    改造背景 前面我们讲解了如何对接Apollo来持久化限流的规则 对接后可以直接通过Apollo的后台进行规则的修改 推送到各个客户端实时生效 但还有一个问题就是Sentinel控制台没有对接Apollo Sentinel控制台本来就可以修改
  • C++ inline用法

    1 引入 inline 关键字的原因 在 c c 中 为了解决一些频繁调用的小函数大量消耗栈空间 栈内存 的问题 特别的引入了 inline 修饰符 表示为内联函数 栈空间就是指放置程序的局部数据 也就是函数内数据 的内存空间 在系统下 栈
  • (fastjson)对象转JSON字符串 接收json字符串返回对象

  • 视频86免费影院-视频电影网聚平台

    这两年在互联网来讲 视频行业是比较火热的 各大视频分享网站 融资 风投 欢乐声一片 这表明中国的互联网用户随着网络带宽的加大对在线视频 电影还是比较喜欢的 正好在网上看到一个不错的网站程序 修改过后自己也来做一个视频网站 不过内容都是采集的
  • 建立Tahi IPv6测试环境

    首先说一下TAHI测试的相关术语 Tester Node TN 测试平台 A tester node for the conformance tests Node Under Test NUT 待测试机 A testee node for
  • oracle查看服务器名字,查看oracle数据库服务器的名字

    查看oracle数据库服务器的名字 windows 中 1 select name from v database 直接运行就可以查看了 2 查看tnsnames ora 的连接 有个SID SID就是服务名了 1 查看oracle的安装目
  • java 面向对象编程——简介

    目录 第一章 对象和类 一 面向对象的程序设计 1 抽象的数据类型 2 什么是类 3 总结 二 定义一个类 1 定义类的成员变量 2 定义类的成员的方法 3 类的成员变量和方法总结 4 创建并使用对象 第二章 方法 一 方法的重载 1 方法
  • Spring Cloud Alibaba版本选型

    Spring Cloud Alibaba版本选型 版本说明 https github com alibaba spring cloud alibaba wiki E7 89 88 E6 9C AC E8 AF B4 E6 98 8E
  • javac不是内部命令或外部命令

    JAVAC 不是内部或外部命令 也不是可运行的程序或批处理文件 今天在运行JAVA的时候突然出了这个错误 这可怎么办 刚接触JAVA的新手可能就不知道怎么解决 JAVAC 不是内部命令或外部命令 下面我就来说说 解决 JAVAC 不是内部命
  • Sed 介绍和教程

    Sed 介绍和教程 作者 Bruce Barnett 译者 Koala 原文地址 http www grymoire com Unix Sed html 注 译者不懂sed Sed 介绍 如果你想写一个程序对一个文件做一些改动 那就sed就
  • B站狂神说--ElasticSearch笔记

    课程 免费 网址 https www bilibili com video BV17a4y1x7zq spm id from 333 999 0 0 笔记来源 https www kuangstudy com bbs 14427364812
  • 知识图谱在金融领域的分析与应用

    本文首发于个人博客 www bobinsun cn 前言 知识图谱因其自身的图展示 图挖掘 图模型计算优势 可帮助金融从业人员进行业务场景的分析与决策 有利于建立客户画像 进行精准营销获客 发现信用卡套现 资金挪用等行为 更好的表达 分析金
  • 车规级MCU知识介绍

    一辆传统燃油车需要大约500到600颗芯片 轻混汽车大约需要1000颗 插电混动和纯电动汽车则需要至少2000颗芯片 这就意味着在智能电动汽车快速发展的过程中 不仅对先进制程芯片需求不断增加 而且对传统芯片需求也会持续增加 MCU就是这样
  • PXE装机报错汇总

    报错1 PXE E53 No boot filename received CLIENT MAC ADDR 88 0C 29 0D 88 3C GUID 564D6429 2E4A 0B83 6161 AE0A050D803C PXE MB
  • 【持续集成CI/持续部署CD】二、Docker安装Maven私服Nexus

    本文是关于通过 Docker 进行安装部署 Nexus3 私服的快速入门和简单使用案例 一 安装 1 通过 docker 获取最新版本的 nexus3 镜像 docker pull sonatype nexus3创建 docker 镜像到宿
  • Pytorch中交叉熵损失函数 nn.CrossEntropyLoss()计算过程

    pytorch的交叉熵损失函数是如何计算outputs和 labels之间的损失的 对于一个分类问题的CNN模型 最后一层的代码一般如下 nn Linear 2048 num classes 然后计算一次迭代损失的代码一般如下 loss f
  • 国教 2019级 算法设计与分析 作业集锦(期末作业)

    7 1 寻找第k小的数 20 分 给定若干整数 请设计一个高效的算法 确定第k小的数 输入格式 测试数据有多组 处理到文件尾 每组测试数据的第1行输入2个整数n k 1 k n 1000000 第2行输入n个整数 每个数据的取值范围在0到1