自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 王道课后代码大题---树与二叉树

一.二叉树的概念1.求两结点的最近公共祖先结点(二叉树任意两个结点必然存在最近的公共祖先结点) 已知一颗二叉树按顺序存储结构进行存储,设计一个算法,求编号分别为i和j的两个结点的最近公共祖先结点方法一思想 最坏的情况是最近公共祖先结点为根节点,而且从最近的公共祖先结点到根节点的全部祖先结点都是公共的。由二叉树的顺序存储的性质可知,任意结点i的双亲结点的编号为i/2,求解i和j最近公共祖先结点的算法步骤如下(设从数组下标1开始存储)(1)若i>j,则结点i所在层次大于等于结点j所在层次。结

2021-07-25 14:17:25 1605 4

原创 经典算法8--生命游戏

说明生命游戏(game of life)为1970年由英国数学家J.H.Conway所提出来,某一细胞的邻居包括上,下,左,右,左上,左下,右上,右下相邻之细胞。游戏规则如下:孤单死亡:如果细胞的邻居小于一个,则该细胞在下一次状态将死亡。拥挤死亡:如果细胞的邻居在四个以上,则该细胞在再一次状态将死亡。稳定:如果细胞的邻居为二个或三个,则下一次状态为稳定存活。复活:如果某位置原无细胞存活,而该位置的邻居为三个,则该位置将复活一细胞。解法生命游戏的规则可简化为以下,并使用case比对即可使用程式

2021-07-25 13:38:44 694

原创 经典算法10--汉诺塔

1双色汉诺塔代码#include <stdio.h>void hanoi(int disks, char sources, char temp, char target){ if(disks == 1) { printf("move disk from %c to %c \n", sources, target); printf("move disk from %c to %c \n", sources, target); }

2021-07-25 13:37:43 166

原创 经典算法九--字串核对

说明今日的一些高阶程式语言对于字串的处理支援越来越强大(例如Java、Perl 等),不过字串搜寻本身仍是个值得探讨的课题,在这边以Boyer- Moore法来说明如何进行字串说明,这个方法快且原理简洁易懂。解法字串搜寻本身不难,使用暴力法也可以求解,但如何快速搜寻字串就不简单了,传统的字串搜寻是从关键字与字串的开头开始比对,例如 Knuth-Morris-Pratt 演算法 字串搜寻,这个方法也不错,不过要花时间在公式计算上;Boyer-Moore字串核对改由关键字的后面开始核对字串,并制作前进表,

2021-07-25 13:31:28 118

原创 经典算法7--八枚硬币

说明现有八枚银币a, b, c, d, e, f, g, h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重解法<font color=#00ffsize=4>单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(deciseion tree),使用分析与树状图来协助求解。一个简单的状况是这样的,我们比较a+b+c 与 d+e+f , 如果相等,则假

2021-07-24 19:51:37 159

原创 经典算法6--八皇后问题

说明西洋棋中的皇后可以直接前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年,E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。解法关于棋盘的问题,可以用递归求解,然而如何减少递归的次数?在八个皇后额问题中,不必要所有的个子都检查过,例如若某列检查过,该列的其他格子就不用再检查了,这个方法称为分支修剪。代码#include <stdio.h>#include <stdlib.h>#de

2021-07-24 19:43:18 76

原创 经典算法五--老鼠走迷宫

说明: 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1表示老鼠行走的路径,试以程式求出由入口至出口的路径。代码:

2021-07-24 19:21:14 888

原创 HTML5笔记(根据尚硅谷html5网课自己敲的笔记)

1.实体,meta标签,语义化标签<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <!-- 实体,转义字符 实体的语法:&实体的名字 &nbsp;空格

2021-07-24 17:14:39 105

原创 经典算法4--三色旗

说明:假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列为蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这份动作,而且一次只能调换两个色旗子。解法:您可以自己想像一下在移动旗子,从绳子开头进行,遇到蓝色往前移,遇到白色留在中间,遇到红色往后移,如下所示:只是要让移动的次数最少的话, 就要有些技巧: 1.如果图中W所在位置为白色,则W+1, 表示未处理的部分移至白色群组。 2.如果W部分为蓝色, 则B与W的

2021-07-24 17:04:19 111

原创 经典算法3--杨辉三角(巴斯卡三角形)

代码:#include <stdio.h>#define N 12long combi(int n, int r){ int i; long p = 1; for(i = 1; i <= r; i++) p = p * (n - i + 1) / i; return p;}void paint(){ int n, r, t; for(n = 0; n <= N; n++) { f

2021-07-24 16:57:33 88

原创 经典算法2--斐波拉契数列

说明:Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:若有一只兔子每个月生一只小兔子,一个月后也开始生产。起初只有一只兔子,一个月后就有两只兔子,二个月后就有三只兔子,三个月后有五只兔子(小兔子投入生产)……如果不太理解这个例子的话,举个图就知道了,注意新生的小兔子需一个月成长期才会投入生产,类似的道理也可以用于植物生长这就是Fibonacci数列,一般习惯称之为费式数列,例如一下:1,1,2,3,5,8,13,21,34,55,89思想:我们可以讲费式数列定义为以下:

2021-07-24 16:52:51 207

原创 经典算法大全1-河内之塔

说明:河内之塔是由三支钻石棒所支撑,开始时神在第一根棒上放置64个由上至下依由小到大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日的来临之时。解法:如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。如果盘数超过两个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B,A-&g

2021-07-24 16:48:20 144 1

原创 数据结构与算法--逆置

目录一.顺序表的逆置1.设计一个高效的算法,将顺序表L中的所有元素逆置思想:代码:2.已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,...am)和(b1,b2,...bn)尝试编写一个函数将数组中两个顺序表的位置互换,即将(b1,b2,...bn)放在(a1,a2...am)的前面思想:代码:3.带头结点的单链表从尾到头反向输出方法一:尾插法实现反向输出方法二:栈来实现思想:方法三:递归来实现思想:代码:4.带头结点的单链表就地逆

2021-07-24 16:40:04 3954

原创 数据结构与算法--删除的各种情况

目录一.删除最小值元素1.顺序表思想:代码:2.单链表思想:时间复杂度为O(n),空间复杂度为O(1)代码:二.删除所有值为x 的元素1.顺序表方法一.思想:代码:方法二思想:代码:2.单链表(1)不带头结点思想:代码:(2)带头结点方法一思想:代码:方法二思想:尾插法建立单链表代码:三.删除某范围内(s1.顺序表(1)有序顺序表思想:代码:(2)无序顺序表思想:代码:

2021-07-24 16:17:48 1158

空空如也

空空如也

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

TA关注的人

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