自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 闲谈操作系统

OS归根结底是在管理好计算机上的资源,随着时代发展,需求变多,OS会不断升级,变得庞大、复杂,但其实它的复杂是由一个一个简单的原理组成的,是自然而然的 但是学习起来太抽象,书上就跟你说如何如何解决一个问题,比如死锁避免里的一些问题,真的是似懂非懂 真的需要实际编程去理解原理,才有意义,不然很快...

2020-02-25 13:16:42

阅读数 2

评论数 0

原创 git命令手册(待完善)

ctrl+F 搜索 删除文件 1. rm -rf filename 或 rm filename:删除工作区文件 2. git rm filename:从git中删除文件 3. git commit -m '描述' 如果删错了文件,且之前add过或者commit过,则可...

2020-01-05 12:43:04

阅读数 31

评论数 0

原创 anki 使用建议

注:CTRL + F 搜索关键词 本文适用于windows端和安卓端,mac可以参考一下 1. 搁置和暂停的区别:搁置就是把当前卡片放到第二天出现,暂停是以后都不出现了(除非恢复,恢复后的卡片进度和暂停前是一样的)。如果是在anki上刷题,对于100%掌握的题,但又不想删掉,就可以暂停 2....

2019-10-23 21:53:33

阅读数 552

评论数 0

原创 中序线索二叉树递归创建算法

void InThread(TBTNode *p, TBTNode *&pre) { if (p != NULL) { InThread(p->lchild, pre); if (p->lchild == NULL) { p->lchild = pre; ...

2019-10-16 22:16:06

阅读数 46

评论数 0

原创 二叉树后序非递归序列的一种方法

逆后序遍历序列是先序遍历过程中对左右子树遍历顺序交换所得到的结果 因此只需要将非递归先序便利算法中对左右子树的遍历顺序交换,就可以得到逆后序遍历序列,然后将其逆序,就得到了后序遍历序列,因此需要两个栈 void postorderNonrecursion(BTNode *bt) { i...

2019-10-15 10:45:31

阅读数 25

评论数 0

原创 二叉树中序非递归遍历

基本思路: 1. 开始根节点入栈 2. 循环执行如下操作:如果栈顶结点左孩子存在,则左孩子入栈,如果不存在,则出栈并输出栈顶结点,然后检查其右孩子是否存在,如果存在则右孩子入栈 3. 当栈空且遍历指针为空时算法结束 void inorderNonrecursion(BTNode *b...

2019-10-15 09:40:42

阅读数 26

评论数 0

原创 kmp实现及分析

void getNext(char * p, int * next) { next[0] = -1; int i = 0, j = -1; while (i < strlen(p)) { if (j == -1 || p[i] == p[...

2019-10-03 21:41:58

阅读数 6

评论数 0

原创 图的邻接表存储结构

Define typedef struct Anode { int no;//该节点编号 int weight;//该边的信息,如权值 struct Anode *nextarc;//指向下一个节点的指针 }ArcNode;//邻接表边类型 即指向结点的边 typedef struct ...

2019-09-28 21:53:48

阅读数 11

评论数 0

原创 判断无向图是否是一颗树

思路: 无向图是树的条件是有n-1条边的连通图 int visit[MAXV]; void DFS2(AdjGraph *G, int v, int &vn, int &en){ visit[v] = 1; vn++; ArcNode *p = G->adjlis...

2019-09-28 21:48:00

阅读数 70

评论数 0

原创 中缀转后缀表达式

算法思路 扫描中缀表达式exp, 遇到一个运算符op时,有以下几种情况: 1. 如果栈空,直接入栈; 2. 当op的优先级大于栈顶运算符时,直接进栈; 3. ··················小于··················,依次出栈运算符并存入后缀表达式postexp,直到栈顶...

2019-07-30 12:28:37

阅读数 24

评论数 0

原创 BST practice

设计算法,对于给定的BST中的一个结点p,找出其左子树中的最大结点和右子树中的最小结点。 keytype LeftMax(BSTnode *bt) { //返回左子树最大结点的值 while (bt->rc != NULL) bt = bt->rc; return bt-&...

2019-07-02 17:31:22

阅读数 24

评论数 0

原创 二叉搜索树的删除操作

删除分4种情况: 被删结点没有子树 直接删除 只有左子树 直接删除,左子树接上 只有右子树 直接删除,右子树接上 左右都有 这种最复杂,但也很简单 情况4有2种办法:(通常采用第一种) 找到左子树中的最大结点r,用r替换,再删除r(r肯定是没有右子树,所以删除r采用情况2的办法, 原理是...

2019-06-27 16:02:07

阅读数 26

评论数 0

原创 判断一棵树是否是BST

使用中序遍历, 保存访问过的上一个节点的值,判断当前访问的值是否大于上一个结点的值,如果大于,就满足BST的性质(因为按照中序遍历,结点是递增的) int last = 0; bool isBST(BSTnode *bt) { if(bt == NULL) ret...

2019-06-25 17:24:43

阅读数 195

评论数 0

原创 二叉搜索树的基本操作

BST ——binary search tree 为什么叫二叉排序树? 因为BST的中序序列是一个有序序列,所以对于一个任意的关键字序列构造一颗二叉排序树,实质就是对其进行排序,使其变为有序序列 特点: 从BST的构造可以看出,任何结点都是作为叶子结点插入的 对于同一组关键字集合,若...

2019-06-23 21:42:25

阅读数 26

评论数 0

原创 combinatorial number

编写函数,参数是两个非负整数n和m,返回组合数,其中m≤n≤25。例如,n=25,m=12时答案为5200300。 技巧:化简,避免溢出 typedef long long ll; ll fun(int m, int n){ if(m < n-m) m = n-m;//...

2019-06-04 11:44:56

阅读数 38

评论数 0

原创 Dijkstra algorithm

implemented with a two-dimensional array int e[10][10]; int dis[10], book[10]; int inf = 99999999; int n, m; int main(){ cin >> n >> ...

2019-05-28 20:08:20

阅读数 80

评论数 0

原创 多重背包空间优化

有N种物品,第i种物品的体积是Ci,价值是Wi,每种物品的数量都是有限的,为ni..现有容量为V的背包,请你放入若干物品,在总体积不超过V的条件下,使总价值尽可能大。 int main(){ int N, V; cin >> N >> V; for(int...

2019-05-22 19:47:53

阅读数 36

评论数 0

原创 完全背包问题

当前有N种物品,第i种物品的体积是Ci,价值是wi。每种物品的数量都是无限的,可以任意选择若干件。 现有容量为V的背包,请你放入若干物品,使总体积不超过V,并且总价值尽可能大。 这就是完全背包问题,和01背包的区别就是物品无限多个。 原始版本(不优化) int main(){ ...

2019-05-22 15:04:20

阅读数 37

评论数 0

原创 最大公共子串问题

求两个串的所有子串中能够匹配上的最大长度是多少。 比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。 下面的程序是采用矩阵法进行求解的,这对串的规模不大的情...

2019-05-20 09:28:08

阅读数 53

评论数 0

原创 最大子段和

定义 给定一个由数字组成的序列,其中连续的一段子序列称为一个子段,子段中的所有数之和称为子段和,这里只考虑非空子段即至少包含—个元素的子段。 动态规划算法 对于全是非正数的序列,答案明显就是其中的元素的最大值。 对于有正数的序列,考虑以每一个点为结尾的最大子段和,这个子段一定满足其前缀...

2019-05-19 22:29:20

阅读数 41

评论数 0

原创 乘积尾零

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 686...

2019-05-19 11:21:22

阅读数 57

评论数 0

原创 最长公共子序列 LCS

定义 longestcommonsubsequence:给定两个序列S1和S2,求二者公共子序列S3的最长的长度。 //注意不是最大公共子串 分析 这个问题可以按照序列的长度来划分状态,也就是S1的前i个字符和S2的前j个字符的最长公共子序列长度,记为lcs[i][j]。 如果S...

2019-05-17 21:39:20

阅读数 79

评论数 0

原创 最长上升子序列(LIS)

最长上升子序列,又称LIS (Longest Increasing Subsequence)是动态规划的一个经典应用。 在原序列取任意多项,不改变他们在原来数列的先后次序,得到的序列称为原序列的子序列。最长上升子序列,就是给定序列的一个最长的、数值从低到高排列的子序列,最长上升子序列不一定是唯一...

2019-05-17 19:05:40

阅读数 78

评论数 0

原创 希尔伯特曲线

希尔伯特曲线是以下一系列分形曲线 Hn 的极限。我们可以把 Hn 看作一条覆盖 2^n × 2^n 方格矩阵的曲线,曲线上一共有 2^n × 2^n 个顶点(包括左下角起点和右下角终点),恰好覆盖每个方格一次。 Hn(n > 1)可以通过如下方法构造: 1. 将 Hn-1 顺时针旋转90...

2019-05-09 20:58:56

阅读数 38

评论数 0

转载 瓷砖样式

小明家的一面装饰墙原来是 3*10 的小方格。 现在手头有一批刚好能盖住2个小方格的长方形瓷砖。 瓷砖只有两种颜色:黄色和橙色。 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。 小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。 (瓷砖不能切割,不能重叠,也...

2019-05-07 22:44:39

阅读数 84

评论数 0

转载 Oil Deposits, UVa 572

输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。例如,图中有两个八连块。 思路 dfs求连通块 Code #include <cstdio> #include <cst...

2019-05-05 19:38:34

阅读数 19

评论数 0

原创 激光样式

x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。 安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开! 国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果? 显然,如果只有3台机器,一共可以成5种样式,即: 全都关上(sorry, ...

2019-05-04 20:44:14

阅读数 43

评论数 0

转载 调手表

小明买了块高端大气上档次的电子手表,他正准备调时间呢。 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。 大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 ...

2019-05-04 20:38:59

阅读数 74

评论数 0

原创 格雷码

格雷码是以n位的二进制来表示数。 与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同。 首尾两个数字也要求只有1位之差。 有很多算法来生成格雷码。以下是较常见的一种: 从编码全0开始生成。 当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0) 当产生第偶数个数...

2019-05-04 10:54:35

阅读数 41

评论数 0

转载 Dropping Balls, UVa 679

#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int D, I; int n; int main() { scanf("%d&quo...

2019-05-02 20:26:00

阅读数 24

评论数 0

原创 组合数

编写函数,参数是两个非负整数n和m,返回组合数,其中m≤n≤25。例如,n=25,m=12时答案为5200300。 #include <iostream> using namespace std; typedef long long ll; ll fun(int m, int...

2019-04-30 20:02:14

阅读数 7

评论数 0

原创 竖式问题

找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空...

2019-04-28 19:24:36

阅读数 41

评论数 0

原创 Circular Sequence, UVa1584

Q: 长度为n的环状串有n种表示法,分别为从某个位置开始顺时针得到。例如,图3-4的环状串有10种表示:CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最小的称为"最小表示"。 输入一个长度为n(n≤100)的环状DNA串(只包含A...

2019-04-28 18:08:35

阅读数 36

评论数 0

原创 牌型种数

Q: 小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 请填写该整数,不要填写任何多...

2019-04-27 18:07:20

阅读数 24

评论数 0

原创 猜数字游戏的提示(Master-Mind Hints, UVa 340)

实现一个经典"猜数字"游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。 输入包含多组数据。每组输入第一行为序列长度n,第二行是答案序列,接下来是若干猜测序列。猜测序列全0时该组数据结束。n=0时输入结束。 sam...

2019-04-25 20:14:50

阅读数 173

评论数 0

原创 迷宫

Question 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上...

2019-04-14 11:02:47

阅读数 129

评论数 0

原创 承压计算

Question X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。 每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7 2 8 1 4 9 1 8 1 8 8 4 1 7 9 6 1 4 5 4 5 6 5...

2019-04-03 23:05:08

阅读数 30

评论数 0

原创 日期问题

目录 Question Ananysis ACcode Question 小明正在整理一批历史文献。 献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/...

2019-04-01 21:43:49

阅读数 24

评论数 0

原创 黄金连分数

目录 Question Solution AC code answer Question 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。 对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后...

2019-03-31 16:28:40

阅读数 12

评论数 0

原创 方格分割

question analysis start the deep search from the center code #include<iostream> using namespace std; #define N 6 int direction[4][2] = ...

2019-03-20 07:52:52

阅读数 24

评论数 0

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