算法
文章平均质量分 91
长浔
一个假的IT男。。。
展开
-
蓝桥刷题记录
蓝桥杯题目记录原创 2023-03-15 22:26:03 · 1034 阅读 · 0 评论 -
算法设计与分析总结(算法+题目+解析)
前言本博客对以下6种经典算法及相关问题进行一个集合汇总。包含各种算法的基本思想、问题的思考思路,以及代码实现(C++)。穷举法百鸡问题递归和分治二分查找合并排序快速排序循环赛日程表动态规划最长公共子序列背包问题贪心算法活动安排问题哈夫曼编码单源最短路径最小生成树背包问题回溯法装载问题0-1背包问题旅行售货员问题分支限界法...原创 2020-01-09 00:09:14 · 33620 阅读 · 9 评论 -
网际校验和算法(Internet CheckSum)
网际校验和算法反码算数运算:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。网际校验和算法:在发送方,先把被校验的数据划分为许多16位字的序列。如果数据的字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。用反码算数运算把所有16位...原创 2019-12-08 22:13:30 · 7985 阅读 · 1 评论 -
动态规划求解:将字符串A变换为字符串B所用的最少字符操作次数
问题问题描述:设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。这里所说的字符操作包括(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串A变换为字符串B 所用的最少字符操作次数也称为字符串A到B 的编辑距离,记为 D(A,B)。试设计一个有效算法,对任给的2 个字符串A和B,计算出它们的编辑距离D(A,B)。例题分析先上图:...转载 2019-09-21 11:13:08 · 11306 阅读 · 1 评论 -
Python打印简单杨辉三角形
前言杨辉三角形的定义:杨辉三角形代码#思路:用一个n+2*n+2的数组包住n*n的数组,初始化a[1][1]的值为1,遍历求a[i][j]=a[i-1][j-1]+a[i-1][j]def YHsanjiao(n): a=[[0]*(n+2) for i in range(n+2)] #初始化一个二维数组 a[1][1]=1 #打印第一行 for j in ...原创 2019-09-16 00:24:51 · 3681 阅读 · 0 评论 -
算法——熄灯问题
//解决熄灯问题(将所有灯都熄灭)//输入:/*第一行输入一个正整数N,表示需要解决的案例数每个案例为5*6的矩阵(灯的初始状态)这些数字以空格隔开,0熄灭,1点亮*///输出:/*对每个案例,首先输出一行输出字符串“PUZZLE #m”,其中m是该案例的序号接着按照该案例的输入格式输出5行1表示需要把对应的按钮按下0表示不需要按每个数字以空格隔开*///分析:/...原创 2019-06-09 22:35:08 · 2088 阅读 · 0 评论 -
C++实现哈夫曼树与哈夫曼编码
哈夫曼树的存储表示typedef char ElemType;typedef struct{ ElemType data; //结点存的数据 int weight; //结点的权值 int parent,lchild,rchild; //结点的双亲、左孩子、右孩子的下标} HTNode,*HuffmanT...原创 2019-06-02 09:51:08 · 11124 阅读 · 1 评论 -
算法——二叉树的遍历方法
前言二叉树的5种遍历方法,以及二叉树的结点计算方法的实现(C++)。二叉树的中序遍历的非递归算法,需要用到栈的相关操作;二叉树的层序遍历算法,需要用到循环队列的相关操作。1.栈的相关操作栈的存储结构#define StackMAXSIZE 100typedef BiTNode* SElemType; //栈中保存的数据是二叉树结点的指针typedef struct{...原创 2019-05-19 22:48:39 · 252 阅读 · 0 评论 -
算法——n阶Hanoi塔问题
问题假设有3个分别命名为A、B、C的塔座,在塔座A上插有n个直径大小各不相同,从小到大编号为1,2,…,n的圆盘。现要求将塔座A上的n个圆盘移至塔座C上,并按同样的顺序叠排,圆盘移动时必须遵循下列规则:每次只能移动一个圆盘圆盘可以插在A,B,C的任一塔座上任何时刻都不能将一个较大的圆盘压在较小的圆盘之上分析设A柱上最初的圆盘总数为n,当n=1时,只要移动1次;否则执行以下三步:...原创 2019-04-07 23:19:29 · 2110 阅读 · 0 评论 -
算法——整数的加法划分
问题对于给定的正整数n,编写算法打印所有划分。eg:输入 6输出:65 14 24 1 13 33 2 13 1 1 12 2 22 2 1 12 1 1 1 11 1 1 1 1 1思路使用三个传参解决该问题:n:需要进行加法划分的整数a:缓冲,用来保存数据k:当前位置实现代码package suanfa;public class huafen...原创 2019-04-01 23:51:28 · 590 阅读 · 0 评论 -
算法——求反转串
问题我们把“cba”称为“abc”的反转串。求输入字符串的反转串。思路这里我们仍然使用递归的方法。构建递归的要诀:找到相似性(对该串可以进行怎样的重复的处理,并使得每一次处理返回一个或多个更简洁的处理)定义出口(递归函数不能无限执行下去,所以要定义递归的出口)在这个问题中我们这样思考:首先将该字符串分为首字符和其他字符两部分。然后返回其他字符,并将首字符返回。对反回的其他字...原创 2019-04-14 00:19:08 · 195 阅读 · 0 评论 -
算法——求公共子序列的长度
问题求两个串的最大公共子序列的长度。(子串不可间隔,子序列可间隔)eg:输入:abcdef xacdg输出:3思路首先将该任务进行划分,划分成两种情况:第一个字符相等的情况:将两个去掉首字符的字符串,继续传入递归然后加1。第一个字符不相等的情况:s2不变并去掉s1的首字符继续递归,s1不变并去掉s2的首字符继续递归,然后判断两个递归哪一个返回值最大。实现代码packag...原创 2019-03-24 23:07:29 · 326 阅读 · 0 评论 -
算法——全排列问题
问题求n个元素的全排列。eg:输入:a b c输出:abc acb bac bca cab cba思路将这n个元素看做一个数组,我们用一个数值k(从0开始)来代表某个元素的位置索引,那么让数组中每一个元素与k进行一次交换,然后将k加1继续调用递归,最后回溯(将交换位置后的数组还原)。当k=数组长度-1时,输出此时的数组元素。实现代码package suanfa;//k:当前...原创 2019-03-23 23:15:05 · 2134 阅读 · 0 评论 -
算法——排列问题
问题m个A,n个B可以组成多少个不同排列的问题。eg:3个A,1个BBAAA ABAA AABA AAAB(4个)思路对首字母是A还是B进行划分:首字母为A的情况:返回m-1个A和n个B;首字母为B的情况:返回m个A和n-1个B。当m降低为0时,全都是A,返回1;当n降低为0时,全都是B,返回1;实现代码package suanfa;public class l...原创 2019-03-29 10:17:04 · 615 阅读 · 0 评论 -
算法——取球问题(特殊球法)
问题在n个球中,任意取出m个球(不放回),求有多少种不同的取法。思路将n个球看做有1个球是特殊球,现在分成两种情况取球:取出的一部分中包含1个特殊球取出的另一部分不包含特殊球那么我们就将从n中取m个球的情况,变成了:从n-1个球中取m-1个球(包含1个特殊球的情况)从n-1个球中取m个球(不包含特殊球的情况)一层一层往下推,直到:n<m的情况,取不了这样的情况,...原创 2019-03-23 14:09:11 · 4099 阅读 · 0 评论 -
算法——杨辉三角形
问题杨辉三角形: 1 1 1 1 2 1 1 3 3 1求第m层的第n个系数。(m,n都从0算起)eg:输入:2 2输出:1思路每次递归,返回上层元素传入递归再相加。若m=0(第0层为1元素),返回1;若n=0(每层第0个元素),返回1;若n=m(每层最后一个元素),返回1。实现代码package suanfa;public class...原创 2019-03-26 13:25:01 · 319 阅读 · 0 评论