Hello,World!
算法-暴力枚举 算法-暴力枚举
算法-暴力枚举 引入暴力枚举就是模拟问题枚举所有可能的解,找出答案; 由于运算量比较大,所有要计算时间复杂度,不能超过计算机一次能计算的运算次数大概是1e8; 1、一个简单的例子今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡
回文字符串 回文字符串
回文字串解题思路突破口:回文串特性,正着读反着读都一样 转化成求最长公共自序列的问题 正序与倒序“公共”的部分就是我们回文的部分,如果把正序与倒序公共的部分减去你就会惊奇的发现剩余的字符就是你所要添加的字符,也就是所求的正解 分析样例:ab
回溯算法解决迷宫问题 回溯算法解决迷宫问题
回溯算法#include <stdio.h> //typedef enum { false, true } bool; #define ROW 5 #define COL 5 //假设当前迷宫中没有起点到终点的路线 bool f
贪心算法 贪心算法
贪心算法 每一步都力求最大限度地解决问题,每一步都选择的是当前最优的解决方案,这种解决问题的算法就是贪心算法。 举例: 假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6
A*寻路算法 A*寻路算法
A*寻路算法迷宫寻路算法中A*算法比BFS更高效一点! 简化搜索区域 一个记录下所有被考虑来寻找最短路径的方块(称为open 列表) 一个记录下不会再被考虑的方块(成为closed列表) #include<stdio.h>
红包算法 红包算法
红包算法微信抢红包想来大家都知道,发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 所有人抢到金额之和等于红包金额,不能超过,也不能少于。 每个人至少抢到一分钱。 要保证所有人抢到金额的几率相等。 普通法:每次针对剩余总金额
栈和队列的互相实现 栈和队列的互相实现
栈和队列的相互实现 栈(stack):先进后出,后进先出。限定在表尾进行插入删除的线性表。 队列(queue):先进先出,后进后出。限定在表头删除,在表尾插入的线性表。 那么如何用栈来实现队列和如何用队列来实现栈的数据结构呢? 用栈实现队
求最大公约数 求最大公约数
求最大公约数写一段代码,求出两个整数的最大公约数,要尽量优化算法的性能。 辗转相除法, 又名欧几里得算法(Euclidean algorithm),该算法的目的是求出两个正整数的最大公约数。它是已知最古老的算法, 其产生时间可追溯至公元前
动态规划 动态规划
动态规划 一个规模比较大的问题分成几个规模比较小的问题,然后由小的问题推导出大的问题 动态规划可以分为如下四大类,可以依次进行学习:线性动规,区域动规,树形动规,背包动规。 一个案列引入动态规划数字三角形–递归 题目:在上面的数字三角形中
如何求解金矿问题 如何求解金矿问题
金矿问题题目很久很久以前,有一位国王拥有5座金矿,每座金矿的黄金储量不同, 需要参与挖掘的工人人数也不同。例如有的金矿储量是500kg黄金,需要5个工人来挖掘;有的金矿储量是200kg黄金,需要3个工人来挖掘…… 如果参与挖矿的工人的总数是
二叉堆和堆排序算法 二叉堆和堆排序算法
二叉堆什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型。 1. 最大堆。 2. 最小堆。 什么是最大堆呢?最大堆的任何一个父节点的值,都大于或等于 它 左、右孩子节点的值 什么是最小堆呢?最小堆的任何一个父节点的值,都小于或等
哈希表和哈希函数 哈希表和哈希函数
什么是哈希表 哈希表(hash table)也叫作散列表,是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作。散列表通过哈希函数实现 Key和数组下标的转换,通过开放寻址法和链表法来解决哈希冲
冒泡排序算法 冒泡排序算法
冒泡排序算法的实现以及优化前言冒泡排序核心内容: 相邻元素间两两比较,当一个元素大于右侧相邻元素时,交换它们的位置,如果是小于或等于的话就位置不变。本篇文章主要使用python语言实现最基础的冒泡排序语言以及算法优化,内容均来源于网络或书籍
查找和排序之快速排序 查找和排序之快速排序
查找和排序之快速排序查找和排序的关系是什么? 排序,是指将一系列无序的记录,通过某种方式或者算法,将其变为有序的过程。 查找,是指在某些特定的数据结构中,对给定的值(key),进行查找相应位置的过程。 排序是查找的前提,排序算法的优劣影响着
递归与树 递归与树
递归(recursion)递归的定义: 递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。 递归的思想是把一个大型复杂问题层层转化为一个与原问题规模更小的问题,问题被拆解成子问题后,递归调用继续进行,直到子问题无需进一
如何判断一个链表是否有环 如何判断一个链表是否有环
如何判读一个链表是不是有环链表?暴力菜鸟版1直接遍历这个链表,每进一个新结点就把这个节点和先前已经遍历的节点进行比较,如果新节点和之前遍历过得节点相同,那说明为有环节点,如果没有那么继续,直到尾节点也没有重复,那说明不是有环链表。 假设链
最小栈的实现 最小栈的实现
最小栈的实现题目:实现一个栈,该栈带有出栈(pop)、入栈(push)、取最小元素 (getMin)3个方法。要保证这3个方法的时间复杂度都是O(1)。 解题思路: step1:设原栈为栈A,辅组栈为B,当第一个元素进栈A时,同时让新元素也