自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

他人世界末的博客

C,C++,Java,Python,数据结构相关文章

  • 博客(20)
  • 收藏
  • 关注

原创 零基础学习算法第二十课 博弈论之取石子游戏

算法思路:有n个石子,每次最少取1个石子,最多取m个石子,2人依次取石子,最后取光石子的人获胜。若n%(m+1)=0,则先手取k个石子,后手就取m+1-k个石子,每轮都是如此,则在最后一轮后手必定取光石子,后手必胜。=0,则先手可以先取n%(m+1)个石子,则剩余石子数%(m+1)=0,先手必胜。

2024-02-07 11:09:34 400 1

原创 零基础学习算法第十九课 动态规划求解最长公共子序列

首先需要定义一个L二维数组和2个字符串L1和L2(L[i][j]表示字符串L1的前i个字符和L2前j个字符的最长公共子序列的长度)对字符串每个字符进行处理,若当前在2个字符串中处理的字符相同,则L[i][j]=L[i-1][j-1]+1,否则L[i][j]=max(L[i-1][j],L[i][j-1]),一直遍历直至2个字符串中的字符全部处理完,最后的L[m][n]即为字符串L1和L2的最长公共子序列(m为字符串L1的长度,n为字符串L2的长度)。

2024-02-07 09:50:15 552 1

原创 零基础学习算法第十八课 动态规划求解币值组合问题

算法思路:给定一个金额,要求用1,5,10,20,50,100等面值组成此金额,问最多有多少种组合。

2024-02-06 18:46:39 134 1

原创 零基础学习算法第十七课 动态规划求解背包问题

算法思路:背包问题是一个动态规划经典问题,给出一个固定容积的背包,再给出一些物品的体积和价值,每件物品只有1个,要求求出此背包可容纳的物品最大价值。定义一个dp数组,每次输入物品体积和价值时进行处理,取出选则此物品和不选此物品时的最大价值赋值给dp数组,dp[i]表示当背包容积为i时可容纳的最大价值。

2024-02-06 14:03:38 412 1

原创 零基础学习算法第十六课 递归求解走楼梯问题

算法思路:有n阶台阶,每次只能上1阶或2阶,问一共有多少种走法。从后往前想,走到第n阶台阶一定是从第n-1台阶走1阶或是从第n-2阶台阶走2步,若走上第n阶台阶一共有f(n)种走法,则f(n)=f(n-1)+f(n-2),再由走上1阶台阶有1种走法和走上2阶台阶有2种走法可递推出f(n).

2024-02-05 19:25:17 239 1

原创 零基础学习算法第十五课 数论之平面分割问题

算法思路:平面分割问题要求求得n条直线最多可以将一个平面分为几部分。

2024-02-05 18:49:39 594 1

原创 零基础学习算法第十四课 数论之鸡兔同笼问题

算法思路:给出鸡和兔的总数n和脚的总数m,要求求出鸡和兔的只数。假设全部是兔,则脚的总数为4*n,则兔的脚的总数比鸡的脚的总数多4*n-m,由于每只兔比每只鸡多2只脚,则鸡的数目为(4*n-m)/2,同理可得兔的数目为(m-2*n)/2.(也可由总数减去鸡的数目得到兔的数目)

2024-02-04 19:24:19 177 1

原创 零基础学习算法第十三课 数论之辗转相除法和更相减损法求最大公约数和最小公倍数

2.更相减损法:将两个数作为被减数和减数,每次用被减数减去减数,然后减数用作下一轮减法的被减数,商作为下一轮减法的减数,循环进行直至商为0,此时被减数或减数即为最大公约数,最小公倍数用原来两个数的乘积除以最大公约数即可得到。1.辗转相除法:将两个数作为被除数和除数,每次用被除数除以除数,然后除数作下一轮除法的被除数,余数作下一轮除法的除数,循环进行直至余数为0,此时除数即为最大公约数,最小公倍数用原来两个数的乘积除以最大公约数即可得到。算法思路:给定两个数,求它们的最大公约数和最小公倍数。

2024-02-04 15:35:44 552 1

原创 零基础学习算法第十二课 贪心算法求解最大可安排节目数

算法思路:首先对节目按结束时间从小到大进行排序,排序后的第一个节目一定要选,之后从排序后的第二个节目开始依次选取开始时间大于或等于当前已选取节目中的最后一个节目的结束时间的节目,直至遍历完所有节目。

2024-02-04 13:22:12 403 1

原创 零基础学习算法第十一课 弗洛伊德算法求解图的多源最短距离

算法思路:用图中每一个点进行放缩,即图中每一个顶点与其他顶点的距离可通过另外的顶点进行缩短,则缩短,直至图中所有顶点完成放缩。

2024-02-04 10:59:01 124 1

原创 零基础学习算法第十课 迪杰斯特拉算法求解图的单源最短距离

算法思路:每次从未标记的顶点集中选出距离源点距离最短的顶点,然后将此点标记,再通过此顶点对与该点直接相连的顶点进行放缩(若可通过该点缩短缩短与源点的距离,则缩短),直至最后所有顶点都被标记。

2024-02-04 10:37:25 140 1

原创 零基础学习算法第九课 广度优先搜索求解迷宫问题(最短路径)

算法思路:广度优先搜索用一个队列去模拟走迷宫过程,最终可得到由起点到终点最短路径的长度。

2024-02-03 12:29:25 173 1

原创 零基础学习算法第八课 深度优先搜索求解N皇后问题

算法思路:N皇后问题是一个经典的摆放皇后的问题,即在一个n*n的棋盘中摆放n个皇后,要求皇后们不能在棋盘同一行,同一列或同一对角线上,问一共有多少种摆法。此处我们用深度优先搜索的方法,从第一行开始摆,每次从每一行的1~n列中选出符合要求的位置并将皇后摆放在此位置,直到所有皇后摆放完毕则输出。(判断摆放位置是否符合要求用check函数,输出用output函数)。

2024-02-02 18:37:03 315

原创 零基础学习算法第七课 深度优先搜索求解全排列

算法思路:给定一个数n,调用DFS函数输出1~n这n个数的全排列,用一个book数组标记数i是否已经在排列中,当n个数全部排列好时输出排列,并将标记位book[i]置0进行回溯,直到输出所有排列。

2024-02-02 13:45:14 239

原创 零基础学习算法第六课 深度优先搜索求解迷宫问题

算法思路:给定一个正方形迷宫,0代表可走,1代表不可走,给定一个起点ox和oy和一个终点ex和ey(注意:第一个数代表行,第二个数代表列),然后调用深度优先搜索DFS函数,按上右下左的顺序依次遍历,调用前先将相应位置置为1代表已访问,然后调用DFS函数,直到到达终点将标记位设置为1,之后即可通过标志位停止对DFS函数的调用(深度优先搜索只能找到一条从起点到终点的路径,但不一定是最短的)。

2024-02-02 10:24:34 198

原创 零基础学习算法第五课 二分查找

算法思路:给定一个有序序列(进行二分查找的序列必须有序)和一个待查找元素,每次将待查找元素与序列中间位置元素进行比较,若相等则查找成功,返回此元素所在位置,否则根据待排序元素小于或大于中间元素分别在序列左半部分或右半部分继续进行二分查找,直到查找成功。若最终左右指针(用左右指针来确定中间元素位置)指向同一个元素时或左指针大于右指针时也未找到此元素,则查找失败。

2023-12-27 11:37:51 364 1

原创 零基础学习算法第四课 快速排序

算法思路:每次从待排序序列中选择一个元素作为枢纽元素(通常为待排序数列第一个元素),然后设置一个左指针和一个右指针,当右指针指向的元素大于或等于枢纽元素时,右指针左移(若每次选取第一个元素为枢纽元素,则右指针先动),直到遇到一个比枢纽元素小的元素后停下,然后让左指针右移,直到遇到一个比枢纽元素大的元素后停下,若左右指针未相遇,则交换左右指针指向的元素,然后继续执行以上步骤直至左右指针相遇,最后将枢纽元素与左右指针相遇后指向的元素交换,将枢纽元素放在其最终位置,此称为完成了一趟快速排序。

2023-12-25 14:27:39 371

原创 零基础学习算法第三课 插入排序

算法思路:起始时第1个元素为已排序序列,第2至第n个元素为未排序序列,从第2个元素开始,每次将第i个元素(2

2023-05-20 18:15:02 67 1

原创 零基础学习算法第二课 选择排序

算法思路:起初n个元素均为未排序元素,首先从未排序元素中选取最小或最大的元素,然后让这个元素与第1个元素交换,然后第1个元素为已排序元素,第2个到第n个元素为未排序元素,然后每次从未排序元素中选取最小或最大的元素放在已排序元素的末尾,即若前i个元素有序,则从第i+1至第n个元素中找到最小或最大的元素,然后与第i+1个元素交换,依此类推,直至n个元素有序。

2023-05-19 22:22:13 77 1

原创 零基础学习算法第一课 交换排序

算法思路:冒泡排序从第1个数组元素开始每次比较相邻的两个元素,如果需要从小到大排序,则前一个元素比后一个元素大则交换,如果需要从大到小排序,则前一个元素比后一个元素小则交换,若是从小到大排序,则每趟遍历都将未排序元素中最大的元素移至末尾,即第一趟将前n个元素中最大的元素移至数组第n个位置,第二趟将前n-1个元素中最大的元素移至数组第n-1个位置,第三趟将前n-2个元素中最大的元素移至数组第n-2个位置,以此类推,最后剩下一个元素即为数组中最小的元素,即第一个元素。

2023-05-18 23:24:49 94 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除