
算法
Am0o0s
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c标准库(STL)系列-sscanf()
stdio.h头文件下原型: int sscanf (const char *str,const char * format,…);format – 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。format 说明符形式为[=%[*][width][modifiers]type=]具体参见后面的用法例子int sscanf(str,...原创 2019-12-01 23:33:49 · 838 阅读 · 0 评论 -
计算机算法设计与分析习题答案第一章
算法分析题求下列函数的渐进表达式找趋于无穷时最大项即可,忽略系数论O(1)与O(2)的区别根据符号定义可得O(1)=O(2)。用O(1)或O(2)表示同一个函数时,差别仅在于其中的常数因子按照渐进阶从低阶到高阶排序过程同题1建立等式,设新机器在t时间内能解决m规模的问题 ,则 3∗2n=(3∗2m)/643*2^n = (3*2^{m})/643∗2n=(3∗2m)/64 解得m=n+6即m2=64∗n2m^2 = 64*n^2 m2=64∗n2 有m = 8n由于T(原创 2022-01-05 12:30:22 · 1753 阅读 · 0 评论 -
栈与队列思维导图
原创 2019-12-06 16:28:46 · 1065 阅读 · 0 评论 -
数据结构与算法李春葆系列之
//实现图的BFS,DFS #include<iostream>#include<stdlib.h>#include<algorithm>#define MAXV 6 #define INF 32767using namespace std;typedef char ElemType;typedef struct{ ElemType dat...原创 2019-12-06 16:26:44 · 1263 阅读 · 0 评论 -
数据结构与算李春葆系列之图存储
//实现图的邻接表与邻接矩阵储存并输出 #include<stdio.h>#include<stdlib.h>#define MAXV 100 #define INF 32767using namespace std;typedef struct{ int no;}VertexType;typedef struct{ int edges[MAXV][...原创 2019-12-06 16:25:30 · 893 阅读 · 0 评论 -
数据结构与算法李春葆系列之哈夫曼树
#include<stdio.h>#include<string.h>#define N 15 typedef struct{ char data[4]; double weight; int parent; int lchild; int rchild;}HTNode;typedef struct{ char cd[N]; int s...原创 2019-12-06 16:24:34 · 1069 阅读 · 1 评论 -
数据结构与算法李春葆系列之二叉树设计性实验
#include<stdio.h>#include<stdlib.h>#include <string.h>#include<algorithm>#define MaxSize 100using namespace std;typedef struct node{ char data; struct node * lchild;...原创 2019-12-06 16:22:45 · 1425 阅读 · 0 评论 -
数据结构与算法李春葆之判断二叉树子树
#include <stdio.h>#include <malloc.h>#include <stdbool.h>#define MAX_SIZE 100typedef char ElemType;typedef struct node{ ElemType data; struct node *lchild; stru...原创 2019-12-06 16:21:29 · 1698 阅读 · 0 评论 -
数据结构与算法李春葆系列 判断二叉树相同算法
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>#define MaxSize 100using namespace std;typedef struct node{ char data; struct node * lchild; ...原创 2019-12-06 16:16:03 · 803 阅读 · 0 评论 -
数据结构与算法李春葆系列之数组和广义表思维导图
原创 2019-12-03 12:01:53 · 1971 阅读 · 0 评论 -
数据结构与算法李春葆系列之递归思维导图
原创 2019-12-03 11:59:34 · 2698 阅读 · 0 评论 -
C语言之scanf函数
提取每个单词的首字母#include<stdio.h>#include<iostream>using namespace std;int main(){ char s; while(scanf("%s",&s)) { cout<<s; } return 0;}去除空格#include <stdio.h>...原创 2019-12-02 00:06:19 · 1474 阅读 · 0 评论 -
循环结构-判断一个数是否为完全数
int sum = 0;//表示最后所有因子的和 //思路:找出这个数num所有的因数并且相加得到sum,看是否等于这个数 for (int i = 1; i < num; i++) { if (num % i == 0)//余数为0,即整除,也就是说i为num...原创 2019-11-30 15:35:13 · 2204 阅读 · 0 评论 -
位运算系列
读入一个10进制正整数,将其二进制向右进行循环移位,并输出移位后的结果。#include <stdio.h>int main(){ unsigned int a,b; int i,n; scanf("%u%d",&a,&n); for(i=1;i<=n;i++) { b=a & 1;//取最后一...原创 2019-11-30 14:06:16 · 1316 阅读 · 0 评论 -
约瑟夫环->循环报数问题
约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从 他的下一个人数起,数到第9人,再将他投入大海中,如此 循环地进行,直到剩下 15 个游客为止。问:哪些位置是将 被扔下大海的位置...原创 2019-11-30 13:49:47 · 1419 阅读 · 0 评论 -
递推和递归的区别
1,从程序上看,递归表现为自己调用自己,递推则没有这样的形式。2,递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题是逆向的。递推是从简单问题出发,一步步的向前发展,最终求得问题。是正向的。3,递归中,问题的n要求是计算之前就知道的,而递推可以在计算中确定,不要求计算前就知道n。4,一般来说,递推的效率高于递归(当然是递推可以计算的情况下)最容易理解就是结合一个经典的例...原创 2019-11-30 13:11:54 · 11639 阅读 · 2 评论 -
算法思考题-三只老鼠找8瓶毒药思路(个人思考+收集)
有8瓶药,其中只有一瓶是毒药,我们有三只老鼠,能被毒药很快毒死。请问最少几次能把毒药试出来?这类题目,首先要明确的是,一只老鼠可以同时喝不止一瓶药水,否则就只能一瓶一瓶的试下去了。明确了这件事,问题就变成了三只老鼠分别喝了几瓶药水之后,有多少种状态的问题,三只老鼠每一只都对应着死或者不死两种状态,而且是独立的,总的状态是2的3次方等于8。这道题中,药水的数量正好是8。1,二分法第一步:将8瓶...原创 2019-11-30 00:03:36 · 6660 阅读 · 1 评论 -
一些算法题目
1输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。第一个单词前,最后一个单词后也可能有0到多个空格。比如:" abc xyz" 包含两个单词,"ab c xyz " 包含3个单词。如下的程序解决了这个问题,请填写划线部分缺失的代码。注意:只填写划线部分的代码,不要填写任何多余的内容。比如已经存在的小括号,注释或说明文字等。int get_word...原创 2019-11-27 23:50:43 · 1163 阅读 · 0 评论 -
格式化输出基础
1、%d 十进制有符号整数。2、%u 十进制无符号整数。3、%ld 输出long整数 。4、%s 字符串。5、%c 单个字符。6、%p 指针的值。7、%e 指数形式的浮点数。8、%x, %X 无符号以十六进制表示的整数。9、%0 无符号以八进制表示的整数。10、%g 自动选择合适的表示法。...原创 2019-11-23 18:42:19 · 216 阅读 · 0 评论 -
Hashcode方法代码解析
这是Java中的String类型hashpublic int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length...原创 2019-11-17 14:10:23 · 2644 阅读 · 0 评论 -
scanf与printf函数格式化
scanf%3d表示接受三位整数例如:scanf("%3d",&a);输入3456789a中接受到的数是345,其他的6789都到输入缓冲区了。printf:%8d是将数字按宽度为8,采用右对齐方式输出,如果数据位数不到8位,则左边补空格。%-8d将数字按宽度为8,采用左对齐方式输出,如果数据位数不到8位,则左边补空格。%08d:默认情况下,数据数据宽度不够8位是用空格填...原创 2019-11-16 17:18:38 · 780 阅读 · 0 评论 -
C语言取整函数
1、直接赋值给整数变量。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分。2、C/C++中的整数除法运算符"/"本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的C编译器有关。3、使用floor函数,向下取整。floor(x)返回的是x...原创 2019-11-16 17:06:46 · 7721 阅读 · 3 评论 -
数据结构与算法之由遍历构造二叉树
李春葆系列#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>#define MaxSize 100using namespace std;typedef char ElemType ;typedef struct node{ Elem...原创 2019-11-14 23:49:37 · 691 阅读 · 0 评论 -
数据结构与算法之各种方法遍历二叉树
搬以前的砖题目需要复习栈与队列的小伙伴,可以到我的#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>#define MaxSize 100using namespace std;typedef struct node{ char dat...原创 2019-11-09 23:31:46 · 1740 阅读 · 0 评论 -
二叉树同构判定算法
同构判定算法想到这个,不禁让我想起了化学有机物结构式(同分异构体判定),或许可以帮助一下化学系的同学,准确的说,有机物的结构式是一颗乱树,不好处理,更夸张的是有些有机物是立体的,如何判定位置也是个问题,或许可以放到三维坐标系里面解决,不过值得思考,嘿嘿嘿,后续ing。。。给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。步骤:1.建立两颗二叉树...原创 2019-11-09 23:17:45 · 2501 阅读 · 0 评论 -
卡拉兹(Callatz)猜想
猜想简介对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展…...原创 2019-11-09 22:46:20 · 2052 阅读 · 0 评论 -
数据结构与算法之二叉链树
数据结构李春葆系列#include<iostream>#include<stdio.h>#include<stdlib.h>#include<algorithm>#define MaxSize 100using namespace std;typedef char ElemType ;typedef struct node{...原创 2019-11-07 21:26:07 · 1248 阅读 · 0 评论 -
数据结构与算法之广义表的基本运算
广义表李春葆系列#include<stdio.h>#include<iostream>#include<stdlib.h>using namespace std; typedef struct lnode{ int tag; union{ char data; struct lnode * sublist; } val; struc...原创 2019-11-07 21:23:38 · 1725 阅读 · 0 评论 -
C++algorithm头文件下sort函数的使用
sort函数是用来排序的函数,它是根据具体的情况使用不同的排序方法,效率较高,一般来说,不推荐使用C语言中的qsort函数,原因是qsort函数使用起来比较麻烦,涉及到很多指针的操作,而且在sort函数在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O(n ^ 2)的极端情况,所以我们在排序的时候尽量使用C++下的sort函数来进行排序qsort 函数使用,占个位置先2. 下面...原创 2019-11-05 23:06:31 · 1714 阅读 · 0 评论 -
数据结构之广义表
#include<stdio.h>#include<stdlib.h> typedef struct lnode{ int tag; union{ char data; struct lnode * sublist; } val; struct lnode * link;}GLNode;int GLLength(GLNode *g)//长度 {...原创 2019-11-03 23:12:54 · 1509 阅读 · 0 评论 -
快速排序内库之qsort函数
首先观察cmp函数声明int cmp(const void * a,const void * b)返回正数就是说cmp传入参数第一个要放在第二个后面,负数就是传入参数第一个要放在第二个前面,如果是0,那就无所谓分前后了。关于qsort函数的说明,包含在stdlib.h头文件里,函数一共4个参数,没返回值,经典的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp);其...原创 2019-11-02 18:32:22 · 1525 阅读 · 0 评论 -
位运算的tricks 系列1
以下内容就不讲位运算的基础了,需要复习位运算的同学,可以参考我的以下文章位运算基础位运算例子为什么要介绍位运算呢?位运算更符合计算机的运行方式,即使是用C,C++,Java,python,VB,等编程语言,到最后都会被变成二进制文件,让运算器进行位运算。因此,我们帮计算机做好了标识符的转换,这样就让程序跑的快一点。技巧一:用o(1)时间检查整数n是否是2的幂次首先思路分析:N如果是2...原创 2019-10-28 21:58:28 · 1483 阅读 · 0 评论 -
一个大数边界引发的血案
坑题,输入一个不超过18446744073709551615的正整数a,输出a+2。18446744073709551615是unsigned long long 可取的最大值,因此可以特判一下,定义一个unsigned long long类型的a,若输入的a=18446744073709551614 输出18446744073709551616,否则如果a=184467440737095516...原创 2019-10-28 07:41:56 · 1792 阅读 · 0 评论 -
大数的转换
输入一个<=1000位的数字,输出这个数字。因为数字过大,超过了19位,不能用int,以及long long,所以可以当成字符串输入输出即可。#include<stdio.h>char a[1010];int main(){ int nn; scanf("%d",&nn); while(nn--) { scanf(...原创 2019-10-28 07:38:10 · 662 阅读 · 0 评论 -
对数字的位数操作
将一个数字每一位加起来得到一个新的数字,若新数字位数为1,则重复操作。题目简单,思路明确#include<iostream>using namespace std;int main(){ int nn; cin>>nn; while(nn--) { int n,m; cin>>n; while(n>=10)//循环操作 {...原创 2019-10-28 07:34:29 · 1119 阅读 · 0 评论 -
计算括号里面的小写字母个数
给定一个字符串,字符串里面包含的有小括号,不会出现括号的里面存在括号的情况,求括号里面小写字母个数(可能括号不匹配,只有左括号,没有右括号)#include<iostream>using namespace std;int main(){ int nn; char a[1010]; scanf("%d",&nn); while(nn--) { scanf(...原创 2019-10-27 22:39:57 · 1303 阅读 · 0 评论 -
TC_荣耀之路
南阳理工学院的新生交流题目思路先查询n,m之间素数个数,若个数为素数,则输出n,m的最小公倍数,否则输出n,m的最大公约数。数据范围不大,从min(n,m)到max(n,m)一路遍历,统计素数个数,再判断素数的个数是否为素数,若是,输出(n,m)最小公倍数,否则输出(n,m)的最大公约数。#include<iostream>#include<string.h>#...原创 2019-10-27 21:31:36 · 855 阅读 · 0 评论 -
for循环之矩阵相加
在又臭又长的DP中随机到了这道题,老天开眼,休息会签到题,题目很容易理解,多组数据,两个n*n的矩阵的相乘,相乘的定义是:a[i][j]*b[i][j]=c[i][j]。即两层for循环遍历i,j,使得c[i][j]=a[i][j]*b[i][j],不过需要留意一下,输出矩阵的每一个数字后面都有空格。#include<stdio.h>using namespace std;i...原创 2019-10-27 20:30:38 · 1496 阅读 · 0 评论 -
记忆搜索(MS)的深入理解
记忆化搜索(Memory Search),其实还是用递归函数实现的,通常函数名依然叫做dfs。核心语句就是那两部分递归的关键语句块啦。函数一开始的判断出口:if已经搜索过该部分就return数组中的值。所以一般将数组初始化为-1。以斐波那契数列为例:函数的递归前进语句:return fib[i]=fib[i-1]+fib[i-2];这样就做到了数组的每个值只计算了一次,不会有多余的时间消...原创 2019-10-27 17:07:30 · 757 阅读 · 0 评论 -
蚂蚁爬楼梯 深度优先搜索(DFS解)
有一个层数为n(n<=1000)的数字三角形。现有一只蚂蚁从顶层开始向下走,每走下一级,可向左下方向或右下方向走。求走到底层后它所经过数字的总和的最大值。【输入格式】第一个整数为n,一下n行为各层的数字。【输出格式】一个整数,即最大值。【输入样例 】516 38 2 62 1 6 53 2 4 7 6【输出样例】23【样例说明】最大值=1+3+6+6+7=23...原创 2019-10-27 14:52:16 · 1645 阅读 · 0 评论