分类: 算法讨论

15 篇文章

thumbnail
【数据结构】异或双链表–拥有单链表的空间,效率如双链表
在此之前,先从入门的方面来讲一讲。 在最开始学编程的时候,我们交换两个变量,有两种方法 //方法一 c=a a=b b=c //方法二 a=a+b b=a-b a=a-b 从第二种方法我们可以看出,我们可以通过两个数的相加,然后特别取出某个数 那么想一想?我们能否通过两个地址相加,取出一个地址呢?(这个在这里给大家引一个方向) 到了后面,接触了位运…
【优化】比特(Bit)运算 【位运算】
先来说说基础的 <<左移>>右移&按位与&按位或&按位非 这些的话不懂就自行百度意义 1.判断奇偶性 bool isJi(int x){ if(x&1) return true; return flase; } 2.字母大小写转换 char ch='a'; ch^=32; 3.^运算的性质 交…
【题解】CDTU宜宾校区第一届大学生程序设计竞赛题解(C/C++)
这次比赛题目还是具有一定思维性和技巧性也比较强,大家不要灰心,加油! 部分同学对于时间的规划以及做题决策有较大的提升空间。 第一题 入门修仙 #include <stdio.h> int main(){ printf("CDTU YYDS 1913~2022!"); return 0; } 第二题 进制转换 答案1042,具体计算方法不…
【数论】快速幂+欧拉降幂
快速幂的原理很简单,下面来看一下 2^6=2^2*2^2*2^2 其实就是通过降幂 long long qpow(int x,int y){ int res=1; while(y){ if(y&1)res=res*x; x=x*x; y>>=1; } return res; } 然后由于MOD的性质 (a*b)%p=(a%p*b…
thumbnail
【图论】图论基础(搜索、最短路、并查集、最小生成树、拓扑排序)
提示代码仅提供引发思路作用,部分地方代码可能又不足之处,也希望有大佬能够补充 图 基本概念 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge)组成。 值得注意的是,图的顶点集合不能为空,但边的集…
【数据结构-二叉树】堆(Heap)
堆是属于数据结构树的一个分支,它其实就是一颗二叉树,堆分有大顶堆和小顶堆 大顶堆:父节点的值永远大于子结点 小顶堆:父节点的值永远小于子结点 在堆中插入元素,我们一般在尾部插入,然后又个上浮操作(以大根堆为操作) 来个动态图 那取出头节点就不说了,主要来说说删除头节点 得有个下浮的过程,我们一般会把头节点复制一份放在堆的后面一位(堆排序有用),然后…
【图论-最短路】Dijkstua堆优化
在找源点最近的点是选择用堆,每次取出堆顶,减少每次查找最近点的时间复杂度,用内嵌for循环时间复杂度时O(n^2),而如果用堆的话,时间复杂度就是O(nlogn) 下面就把代码放出来,存图用的是链式前向星,如果对链式前向星不太熟悉,可以去看一看我之前的帖子 下面是代码: /**************************************…
【图论-存图】邻接矩阵 邻接表 链式前向星
这篇文章主要来讲一下邻接矩阵 邻接表 链式前向星(本篇需要具备一定图的基础知识,至少邻接矩阵之前要会,这里主要讲解邻接表和链式前向星) 我不大喜欢说废话,所以直接上图 邻接矩阵:用二维数组存储点与点之间的关系,也就是这样 但是仔细想想,有很多不必要的空间浪费,比如说(2,5)这个空间就没有必要,那我们可以像一个办法来去掉这些多余的空间,邻接矩阵我们…
【再谈递归】递归理解了,该如何去写程序
如果你理解了递归,那么你就成功了一半 递归分为两个部分,“递”和“归” 递归递归先递再归。 可能很多同学对递归还不了解,那我在这里来说一说:何为递归。 何为递归? 递归指的是在函数(方法)的定义中使用函数(方法)自身的方法。 举个例子: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老…
thumbnail
【C++】高精度算法讲解,祝祖国母亲生日快乐!
在发写作前,在此祝祖国母亲生日快乐,同时也祝大家国庆节快乐! 山河壮丽,岁月峥嵘!举国英豪开新局,中天丽日庆长春。祝福我们的国家繁荣富强,祝福我们的生活步入小康,国庆节快乐! What's the 高精度? 高精度运算也称之为大数运算。即:在变量运算对象的数值范围为任何数据类型所无法容纳的情况下,采用整数数组存储(用字符串表示数字)。 首先来思考一…
关于递归算法的优化Ⅰ(以经典的斐波那契数列为例)
在此之前你需要具备一下知识:1. 一门编程语言基础,最好是C或者C++,其他语言如果你能看懂也可以看 如果你不具备以上知识,请你先补补课再来看 递归是啥我也不具体多说了,直接上代码。 初始的斐波那契代码: #include <bits/stdc++.h> using namespace std; int fib(int n){ if(n…
排序算法
排序算法,我们要从冒泡排序说起。 冒泡排序 何为冒泡排序,废话不多说,直接上图 从图可以看出,有多少组数据,冒泡排序就要进行多少趟,而每一趟,都是把相邻的元素进行比较,如果符合排序要求,则下一步,如果不符合就进行调换。 冒泡排序比较简单,在这里不做太多的解释,直接上代码 #include <bits/stdc++.h> using na…
thumbnail
PAT 1002 写出这个数(JAVA / Hash)
输入格式:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。 输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。 输入样例:123456789098765432112…