algorithms
文章平均质量分 60
一些个人所学的算法知识、算法题目总结
Evan_love
Never excuse for failure!
展开
-
回溯算法总结
一. 回溯算法简介回溯算法就是我们常说的DFS算法,本质上是一种暴力穷举算法。解决一个回溯问题,实际上就是一个决策树的遍历过程。路径: 也就是已经做出的选择选择列表: 也就是你当前可以做的选择结束条件: 也就是到达决策树底层,无法再做选择的条件。二、回溯算法的框架result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backt原创 2022-02-01 21:56:05 · 282 阅读 · 0 评论 -
动态规划算法总结
一、模板# 初始化 base casedp[0][0][...] = base# 进行状态转移for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态2][...] = 求最值(选择1, 选择2,...)二、解题套路明确【状态】明确【选择】明确dp函数/数组的定义明确base case三、状态压缩如果计算状态dp[i][j]需要的都是dp[i][j]相邻的状态,那么就可以使用状态压缩技巧,将原创 2021-12-03 10:13:58 · 1012 阅读 · 3 评论 -
【算法浅析】贪心算法学习笔记
(一)贪心算法基础1、贪心算法是什么贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所得的是某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态。一般来说,如果在想到某个似乎可行的策略,并且自己无法举出反例,那么就勇敢地实现...原创 2020-05-01 22:11:37 · 1100 阅读 · 0 评论 -
你一定听得懂的"递归"教程!课程笔记
明明白白学递归递归过程什么样?什么情况用递归递归应该怎么编1.递归的定义又译为递回,在数学与计算科学中,是指在函数的定义中使用函数自身的方法。当进行下一次递归的时候,先前的函数会被挂起,栈的深度会加深。后进先出,栈的结构。不管递归到哪,最后会执行完毕,回到起点。2.两条原则①调用的目的是为了让其返回返回指的是返回一个结果或者返回一个控制权(执行成功,未必返回结果)...原创 2020-04-28 22:18:11 · 282 阅读 · 0 评论 -
【剑指offer】二叉树的镜像C++实现
有的时候自己想了很久却还是想不出来思路,一看解析却很简单,看来还是应该好好刷题啊!!!(一)题目描述(二)代码#include <iostream>#include<stack>#include<cstring>#include<queue>#include<algorithm>using namespace std...原创 2020-04-13 23:07:03 · 172 阅读 · 0 评论 -
【算法浅析】2019年CCF算法习题部分整理
(一)CCF201909-1 小明种苹果试题描述代码#include <iostream>#include<cstring>#include<algorithm>#include<math.h> using namespace std; const int N=100;int main(int argc, char** arg...原创 2020-04-03 19:57:43 · 556 阅读 · 0 评论 -
二叉树的遍历与哈夫曼树的构造详解
(一)二叉树的遍历基础1、二叉树的先序遍历算法思想递归式:根结点->左子树->右子树递归边界 :二叉树是一棵空树代码void preorder(node* root){ if(root==NULL){ return;//到达空树,递归边界 } //访问根结点root,例如将其数据域输出 printf("%d\n",root->data); ...原创 2020-04-01 19:48:07 · 1986 阅读 · 0 评论 -
CCF考试中关于绘制图像问题的分析
(一)201412-2 Z字形扫描题目描述在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 6 9 4 6 4 7 3 1 3 对其进行Z字形扫描后得到长度为16的序列: 1 5 3 9 7 3 9 5 4 7 3 6 6...原创 2020-04-01 18:48:14 · 221 阅读 · 0 评论 -
【算法浅析】CCF中常见的关于字符串处理相关问题分析
(一)CCF 201409-3 字符串匹配题目描述 > 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字...原创 2020-03-29 21:45:48 · 316 阅读 · 0 评论 -
【算法浅析】CCF-CSP中关于游戏模拟问题的总结
(一)CCF201903-2 二十四点题目描述题目分析本题主要是栈stack的使用,以及当遇到加减乘除符号时入栈操作代码#include <iostream>#include<cstring> #include<stack> using namespace std;const int N=10;int main(){ int n...原创 2020-03-29 21:19:24 · 251 阅读 · 0 评论 -
【算法浅析】CCF中关于日期计算相关问题总结
做了大半天的算法题,对CCF中出现的日期相关问题进行一个小小的总结。(一)CCF 201503-3 节日题目描述有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。 现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期...原创 2020-03-26 21:35:39 · 520 阅读 · 0 评论 -
可能是目前为止最为详细的深度优先搜索DFS和广度优先搜索BFS算法分析
图的遍历是指从图中某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次,且仅访问一次。图的遍历常见算法有BFS和DFS。文章目录(一)深度优先搜索DFS1、基本思路2、图示3、算法性能分析4、深度优先遍历的非递归写法(二)广度优先遍历BFS1、基本思想2、图示3、算法性能分析4、应用---BFS算法求解非带权图单源最短路径问题(三)经典算法题目分析1.Red and Black...原创 2020-03-23 16:01:45 · 787 阅读 · 0 评论 -
201312-3 CCF试题简析
1.试题描述在横轴上放了n个相邻的矩形,每个矩形的宽度为1,而第i(1<<i<<n)个矩形的高度为Hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3,1,6,5,2,3。请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子。最大矩形如下图所示的阴影部分,面积是10.输入格式:第一行包含一个整数n,即矩形的数量(1&...原创 2020-03-20 13:53:21 · 180 阅读 · 0 评论 -
保龄球计分问题
保龄球计分问题题目描述在保龄球比赛中,已知每次击倒的保龄球数,计算在一局比赛中一个人的得分,要算出每一轮的得分和每一轮之后的累加得分。保龄球比赛一局共10轮,前9轮中每一轮最多滚两次球;第十轮可以滚两次或3次球。每轮计分规则为(1)如果一轮中第一个球击倒全部10个保龄球,称为Strike(好球),则这一轮的得分等于10加上下两轮击倒保龄球的个数。(2)如果一轮中两个球击倒全部10个...原创 2019-03-05 18:45:23 · 4195 阅读 · 3 评论