
算法
FromBen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
辗转相除法求最大公约数和最小公倍数
python代码如下:#辗转相除法求最大公约数 最小公倍数print("请输入两个正整数并用空格隔开: ")m_original,n_original=[int(iter) for iter in input().split(' ')]m=max(m_original,n_original)n=min(m_original,n_original)while 1: r=m%n ...原创 2019-04-10 22:24:29 · 2084 阅读 · 0 评论 -
堆排序
堆实质上可以看作是以完全二叉树的结构来维护的一维数组大顶堆:每个结点的值都大于或等于其左、右子结点的值小顶堆:每个结点的值都小于或等于其左、右子结点的值利用大顶堆实现由小到大排序代码如下:/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filename: *Author: Zhang Peng *Date: *Vers...原创 2019-08-16 16:50:00 · 166 阅读 · 0 评论 -
二叉树创建与非递归遍历
其中中序非递归遍历较难理解,对其步骤做一解释:1、从根节点开始遍历左儿子直至nullptr,并将其指针加入栈中2、出栈向后退一步,保存当前栈顶指针所指向的二叉树值,并出栈3、将根节点设置为前一步栈顶指针所指向的节点的右儿子代码如下:/***Copyright @ 2019 Zhang Peng. All Right Reserved.*Filename:*Author: Zha...原创 2019-08-25 15:54:59 · 458 阅读 · 0 评论 -
最大公共子串
最大公共子串求法与最大公共子序列类似,均可采用动态规划的思想if(str1[i]==str2[j]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=0;代码如下:/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filename: *Author: Zhang Peng *Date: ...原创 2019-08-24 09:57:30 · 345 阅读 · 0 评论 -
二叉树创建与递归遍历
建立如下图所示二叉树,# 代表空节点。其前序遍历、中序遍历、后序遍历递归代码如下:/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filename: *Author: Zhang Peng *Date: *Version: *Description:**/#include<iostream>#inc...原创 2019-08-23 21:23:52 · 242 阅读 · 0 评论 -
回溯法
通常回溯法适合用递归实现代码以剑指offer面试题12 : 矩阵中的路径为例,如果未找到当前所查找的字符,则需要回到上一步,重新查找。如何实现回溯的这一思想,主要采取递归和建立访问矩阵的手段,退到上一步的时候,不光查找的指针要退回去,访问矩阵相应的位置也要置为false 。class Solution {public: bool hasPathCore(char* matrix, i...原创 2019-08-05 19:59:31 · 180 阅读 · 0 评论 -
归并排序
归并排序采取分治法的思路,将长数组分为较小的数组,在较小的数组组内排序完成之后,再将其组合,通常采用递归实现。举例:12 34 5 67 4 6 7 785 67 56 由小到大排序归并排序各阶段步骤见下图代码如下:/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filename: *Author: Zhang Pen...原创 2019-08-02 16:22:41 · 115 阅读 · 0 评论 -
用蒙特卡洛仿真估计π的值
其实是投点实验估计概率值的一个应用,算法原理如图所示根据以上算法,编写代码:#include<iostream>#include<cmath>using namespace std;double computePI(int r, int count){ int index = 0; int cout_circle=0; while (index &...原创 2019-06-19 18:00:29 · 2982 阅读 · 0 评论 -
复杂链表的复制
一直对于链表的操作不太熟悉,借此题目熟悉了链表的复制及初始化等等。该题目是剑指offer上的一个题目,书上提供了两种思路,以下代码实现了第一种思路,不会改变原链表。而书上的第二种思路会改变原链表,不过思想非常巧妙。此处的复制指的是深拷贝,作为最基本的操作则是单个链表结点的拷贝,自己分配内存来赋值,后面再将每一个链表结点连接起来即可。/*struct RandomListNode { ...原创 2019-05-11 16:55:13 · 142 阅读 · 0 评论 -
剑指offer 面试题14:剪绳子
/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filename: *Author: Zhang Peng *Date: *Version: *Description:给定长度的绳子剪为n段,求最大乘积**/#include<iostream>using namespace std;int cutro...原创 2019-04-25 15:21:46 · 396 阅读 · 0 评论 -
快速排序
快速排序实际上是改进的冒泡排序,冒泡排序每次交换相邻的两个位置的数据,而快速排序则可以跨位置交换顺序。每一轮快速排序会将一个数字安排到其正确的位置,若每次取第一个数字为基准数,则首先从最后一个位置查找并将当前查找位置记为s1,后从最前面的位置查找并将当前查找位置记为s2,重复这两个步骤,直至s1<=s2,退出进行下一轮快速排序。/** *Copyright @ 2019 Zhang Pe...原创 2019-04-25 15:04:54 · 152 阅读 · 0 评论 -
深度优先遍历(DFS)
以下以二维平面上的图来做示例,在所示图上用深度优先遍历查找指定起始点和终止点的路径。图中1表示可以走,0表示障碍不可以走在深度优先遍历中需要注意的有以下几点:递归实现深度优先遍历,注意退出条件需记录已访问和待访问的位置查找路径需确保路径的连通性代码如下:/** *Copyright @ 2019 Zhang Peng. All Right Reserved. *Filenam...原创 2019-08-26 10:54:07 · 952 阅读 · 0 评论