- 博客(5)
- 收藏
- 关注
原创 1050 螺旋矩阵 (25 分) 测试点全过
/* 1050 螺旋矩阵 (25 分) 难度:hard 本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为 m 行 n 列,满足条件:m×n 等于 N;m≥n;且 m−n 取所有可能值中的最小值。 输入格式: 输入在第 1 行中给出一个正整数 N,第 2 行给出 N 个待填充的正整数。所有数字不超过 10^4 ,相邻数字以空格分隔。 输出格式: 输出螺旋矩阵。每行 n 个数字,共 m...
2021-02-23 12:08:46 443
原创 字符串匹配算法——普通方法(回溯)+高级方法(KMP),保证你学会
字符串匹配一直是一个热门的算法。我们今天就来看看如何在一个很长的字符串中找到所需的子串。看完本篇博客,我相信你就会知道子串“babbb”在主串“abbacdbcbababbbac”的什么地方了(O(∩_∩)O哈哈~)一、回溯法求子串位置算法思想给定两个指针:i、j,分别指向主串的第pos个位置和子串的第一个位置。比较两个指针所指的字符:如果相等,则继续比较后续字符;若不等,则 i 指针跑到pos的下一个位置上,j 指针继续从第1个位置开始比较……直到找到对应的子串。具体过程见下图——我们发现每
2020-10-07 11:36:14 1537
原创 练习7.1 排序 (25分)——彻底理解排序算法
PAT 练习7.1 排序 (25分)最近在PTA练习题目时,发现了这道非常好的题目。推荐这道题的理由是:这道题给出了最大十万个数据,因此可以直观地看出各个排序方法的时间好坏(时间复杂度 & 空间复杂度)。希望各位在看的时候,不妨自己手底下试试,毕竟实践出真知嘛好,我们来看题目——给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数
2020-10-05 11:29:25 2385 1
转载 斐波那契查找实现及原理
斐波那契查找原理:斐波那契查找是一种在有序表中高效查找指定元素的算法,比折半查找要复杂一些,主要复杂在要多做不少准备工作。下面看它的工作流程:计算并保存一个斐波那契序列的数组 F[ ] = {1, 2, 3, 5, 8, 13, 21},方便以后取值。把有序数组的长度扩充到 nums. length = F[k] - 1,k 是满足条件的最小值,比如数组长度为15,那么就把它长度扩充到 F[8] - 1 = 20,所有在末尾添加的扩充元素都是原数组最后一个元素的复制。找到 mid 元素,不断进行二
2020-08-01 15:35:22 733
原创 串的模式匹配算法(KMP算法)
说明:设主串为S,模式串为T,i表示主串元素的下标,j表示模式元素的下标,k是next( )函数找出来模式的下标为了实现这些算法,都需要对串进行“定长顺序存储表示”一、子串位置的定位函数(回溯法)**1. 算法思想:主串的第pos个位置,和模式的第1个位置开始比较,如果相等,则继续比较后续字符;若不等,则 i 指针跑到pos的下一个位置上,j 指针继续从第1个位置开始比较……直到找到对应的子串。代码如下:int Index(SString S, SString T, int pos) {
2020-05-29 16:12:51 934 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人