算法题思路
记录本在做算法的思考过程
小袁拒绝摆烂
没啥特别的。
展开
-
算法课堂-分治算法
例子称假币最笨的方法:两两称,运气好第一次就可以确定有假币,运气不好,最后才能确定没有假币(或有假币)可以用来实现,比两两称简单很多。原创 2023-02-26 10:07:48 · 348 阅读 · 0 评论 -
算法进阶-动态规划
大家肯定想用递归做思路大概就是这样递归到最后一行就是对应的D(i,j)然后往上推但是这样会超时,因为存在大量的重复计算比如调用第一行MasSum(7)需要调用MaxSum(3)和MaxSum(8)但是调用第二行MaxSum(3)还要调用3行的MaxSum(8)和3行的MaxSum(1)第二行的MaxSum(8)也会调用第三行的MaxSum(1)是不是第三行的MaxSum(1)就调用了两次这就重复了随着数据量增多,重复也会增多改进。原创 2023-02-26 14:30:09 · 445 阅读 · 0 评论 -
算法进阶-深度优先搜索
基本上所有的深搜问题都可以简化成在图上找路的问题一些可能的路径也可能有些不连通图无法到达理解代码框架具体path用来记录具体的路径dfs就是我们的主要调用函数把V的每个节点都遍历一遍DFS(U)到达最后一个点,无路可走时,如果是到达终点才会返回true返回true紧接着上面的函数会判断DFS(U)也返回true就把整条路径记录下来了Dfs(V)返回true代表找到了如果Dfs(V)返回false就是没找到。原创 2023-03-01 11:27:20 · 52 阅读 · 0 评论 -
What is 递归(递归做题思路)
而递归,是从我们不知道的条件往知道的条件推(不符合人的思考方式,所以会觉得很难)和普通的循环不同的是,循环一般是从我们知道的条件向不知道的条件推。递和归共有的就是,前后数据的逻辑,也就是推导公式。递,简单的字面意思,递出新的参数开辟新的空间。以递的方式传参,以归的方式得出结果。来执行下一个参数对应的方法的空间。不知道斐波那数列可以搜一下。求斐波那数列的第n个数字。就是我们的return。原创 2023-02-13 12:44:20 · 286 阅读 · 0 评论 -
Java方法递归
方法递归就是在一个方法里调用本方法的操作叫递归(自己调用自己)test(4)调用在我之前的java方法调用机制的里面有提到方法是创建独立栈区域,然后再进行操作test(4)创建一个独立栈(这里用4栈命名吧)4栈执行到test(n-1)又创建一个独立栈执行test(3) //称为3栈同理啊3栈会创建一个独立2栈最后2栈执行然后返回3栈内因为2栈执行完了,所以3栈向下运行同样输出n=33栈执行完回到4栈4栈执行完最后一条语句n=4最后所有的方法执行完,回到main方法继续执行下面的语句如图..原创 2022-06-20 11:49:06 · 223 阅读 · 0 评论 -
判断素数(n/2和sqrt(n)何时谁的效率更高)
如果不可以,你判断到n/2,之后的比(n/2,n)的数,对应的数字,肯定在(1,2)区间。所以你在根号n前找不到一个整数和另一个整数匹配,你肯定就是素数。所以没必要啊,到n/2就肯定是是素数了,后面就没必要判断。1.你从i=2开始,如果可以就直接n/2了,就不是素数。一个是O(sqrt(n))一个是O(n/2)一.关于为什么为二分之n或者sqrt(n)注意:直线那条应该是n/2,那里标错了。n>4,sqrt(n)效率高。so,一般用sqrt(n)2.关于sqrt(n)n原创 2023-02-06 15:35:51 · 604 阅读 · 0 评论 -
单链表-自用
链表1.创建链表2.链表插入数据3.删除链表数据4.输出链表数据5.删除链表下面创建五个自定义函数分别进行五个上面的操作typedef struct Grade_Info NODE;//1.创建链表 NODE *Create_LinkList(void){ NODE *head, *tail, *pnew; int score; head = (NODE *)malloc(sizeof(NODE));//创建头节点 if(head == NULL)//创原创 2022-04-09 23:29:59 · 77 阅读 · 0 评论 -
常见dos命令
打开cmd方式win+R,输入cmd按下回车键进入cmd常见命令1.盘符切换D:(英文冒号)会进入D盘,其他盘操作方式同理2.查看目录下所有文件dir3.切换目录cd跨盘切换cd /d D: 学习返回上一级cd ..本盘切换cd 目录名4.清理屏幕cls5.退出终端exit6.常看电脑ipipconfig7.打开计算机calc8.新建记事本notepad9.创建目录,(会在所在目录创建一个文件夹)md 目录名字10.创建文件(文档什么的)指定文件夹下(创建一个txt文件)cd>a.txt11.删除文件del原创 2022-06-02 14:32:14 · 66 阅读 · 0 评论 -
汉诺塔递归问题
给定三根柱子,记为A,B,C ,其中 A 柱子上有 n 个盘子,从上到下编号为 0到N-1,且上面的盘子一定比下面的盘子小。问:将 A 柱上的盘子经由 B柱移动到 C 柱最少需要多少次?从A移动到C,注意大的不能放在小的上面,所以我们要借助另一个柱子解释B柱子实现移动但是要使最大的柱子放在C上面肯定要把上面的小盘子放在B柱,此时C柱为工具柱,辅助A上面n-1个盘子移动到B所以,汉诺塔问题其实可以分解成两个小问题将比最大的盘子小n-1个盘子的从A移动到B柱上再第n个盘子从A移动到C再将原创 2022-03-13 20:24:02 · 110 阅读 · 0 评论 -
快速排序算法理解
快速排序1.确定基准点(pivot)这里设置为array[0]2.设置left=0right=(sizeog(array)/sizeof(array[0]))-1保证left<right情况下进行如下操作3.从右到左依次与pivot进行比较,先从右边开始right递减找到比pivot小的放到array[0]的位置上4.从左到右依次与pivot进行比较,left递增找到比pivot大的数房子刚才array[right]的位置上并使right--5.重复上面步骤,直至l原创 2022-03-14 16:18:23 · 62 阅读 · 0 评论 -
实现所有语言(大概)小数到整数的四舍五入
我们想要实现四舍五入的功能可以使对应的数+0.5。众所周知,一般的小数转为整数时会直接舍弃小数位。原创 2022-11-27 19:12:46 · 170 阅读 · 0 评论 -
冒泡排序及优化
冒泡排序就是比较相邻两个数大小,如果后面的比前面的小就交换位置,如果大就不做操作这样进行下来一轮,只肯定能保证数组的最后一个数是整个数组中最大的若有n个数充分n-1次就可以完成排序(最后第一个肯定是最小的)接下来展示基础冒泡排序的c代码但是内循环的j...原创 2022-06-09 22:36:38 · 83 阅读 · 0 评论