摘要: 前面介绍了深度优先搜索,可知DFS是以深度作为第一关键词的,即当碰到岔道口时总是先选择其中的一条岔路前进,而不管其他岔路,直到碰到死胡同时才返回岔道口并选择其他岔路。接下来将介绍的广度优先搜索(Breadth FirstSearch,BFS)则是以广度为第一关键词,当碰到岔道口时,总是先依次访问从该 阅读全文
posted @ 2021-04-17 19:21 银发制御 阅读(393) 评论(0) 推荐(0)
摘要: 深度优先搜索会走遍所有路径,并且每次走到死胡同就代表一条完整路径的形成。这就是说,深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法。使用递归可以很好地实现深度优先搜索。当然也可以使用非递归的方法实现DFS,但是非递归的方法一般情况下会比递归的方法要麻烦。在使用递归的时候,系统还会调用一个叫 阅读全文
posted @ 2021-04-17 19:17 银发制御 阅读(449) 评论(0) 推荐(0)
摘要: 题目描述:读入一个只包含 + ,-,×, / 的非负整数计算表达式,计算该表达式的值。输入格式:测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运草符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。输出格式:对每个测试用例输出1行,即该表 阅读全文
posted @ 2021-04-17 19:13 银发制御 阅读(150) 评论(0) 推荐(0)
摘要: 栈是一种先进后出的数据结构,以下是其常见操作: (1)清空(clear) 栈的清空操作将栈顶指针TOP置为-1,表示栈中没有元素。 void clear() { TOP = -1; } (2)获取栈内元素个数(size) 由于栈项指针TOP始终指向栈顶元素,而数组下标从0开始、因此栈内元素的数为TO 阅读全文
posted @ 2021-04-17 19:12 银发制御 阅读(481) 评论(0) 推荐(0)
摘要: 题意:给出N个结点的地址address、数据域data以及指针域next,然后给出链表的首地址,要求把在这个链表上的结点按data值从小到大输出。样例解释:按照输入,这条链表是这样的(结点格式为[address, data, next]):[00001, 0, 22222]→[22222, 1000 阅读全文
posted @ 2021-04-17 18:59 银发制御 阅读(59) 评论(0) 推荐(0)
摘要: 不同于动态链表,需要指针来建立节点之间的联系,而有些问题来说,节点的地址是比较小的整数(例如5位数的整数),这样就没必要建立动态链表,而使用方便得多的静态链表。静态链表的实现原理是hash,通过建立一个结构体数组,并令数组的下标直接表示节点的地址,来达到直接访问数组中的元素就能访问节点的结果。静态链 阅读全文
posted @ 2021-04-17 18:55 银发制御 阅读(98) 评论(0) 推荐(0)
摘要: 题意:给出两条链表的首地址以及若干节点的地址,数据,下一个节点的地址,求两条链表的首个共用节点的地址。如果两条链表没有共用节点,则输出-1。思路步骤1:由于地址的范围很小,因此可以直接用静态链表,但是依照题目的要求,在结点的结构体中再定义一个int型变量flag,表示结点是否在第一条链表中出现,是则 阅读全文
posted @ 2021-04-17 18:48 银发制御 阅读(41) 评论(0) 推荐(0)
摘要: 对sort函数(需要algorithm头文件),它的cmp可以是“函数”,也可以是“对象” bool myfunction (int i,int j) { return (i<j); } struct myclass { bool operator() (int i,int j) { return 阅读全文
posted @ 2021-04-17 18:46 银发制御 阅读(2322) 评论(0) 推荐(0)
摘要: #include<stdio.h> #include<stdlib.h> struct node { int data; node* next; };//定义链表节点 (一)创建链表 node* create(int* Array) { node* p, * head, * pre; int k = 阅读全文
posted @ 2021-04-17 18:34 银发制御 阅读(132) 评论(0) 推荐(0)
摘要: 利用问题的本身与序列的特新,使用两个下标i, j对序列进行扫描(可以同向扫描,也可以反向扫描),以较低的时间复杂度解决问题,一般是O(n) 例1:给定一个递增的正整数序列和一个正整数M,求序列中的两个不同位置的数a和b,使得它们的和恰好为M,输出所有满足条件的方案。加入给定序列{ 1,2,3,4,5 阅读全文
posted @ 2021-04-17 18:31 银发制御 阅读(127) 评论(0) 推荐(0)
摘要: 给一个整数数列和正整数p,设这个数列中最大值M,最小值m,如果有M<=m*p,则称这个数列为完美数列,给一个p和一些正整数,从里面选择尽可能多的数,使他们构成一个完美数列,并输出最多可以选择的数字个数。分析:从左至右扫描序列对其中的每一个数a[i]。在[i+1,n-1]二分查找第一个超过a[i]*p 阅读全文
posted @ 2021-04-17 18:27 银发制御 阅读(66) 评论(0) 推荐(0)
摘要: 为降低原来O(b)的时间复杂度,求解a^b%m,现在利用二分的思想,进行求解。a^b=a *a^(b-1) b为奇数ab=a(b/2)*a^(b/2) b为偶数在经过O(ln(b))级别的转换后,就可以将b变成0; 还要必须知道的是 a b…n%m=(a%m)(b%m)…(n%m)%m.另外%,/ 阅读全文
posted @ 2021-04-17 18:26 银发制御 阅读(46) 评论(0) 推荐(0)
摘要: #include<cstdio> const double eps = 1e-5; double f(double x) { return x * x; } double calSqrt() { double mid,left=1,right=2; while (right - left > eps 阅读全文
posted @ 2021-04-17 18:17 银发制御 阅读(89) 评论(0) 推荐(0)
摘要: (一)当题目的目的是查找“序列中是否存在满足某条件的元素”,使用此方法最好 A[]为严格递增序列,left为二分下界,right为二分上界,x为想要查询的数,左闭右闭区间[left,right]查找.查找成功返回位置,查找失败返回-1. int binarySearch(int A[], int l 阅读全文
posted @ 2021-04-17 18:12 银发制御 阅读(123) 评论(0) 推荐(0)
摘要: 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。 为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字 阅读全文
posted @ 2021-04-17 18:05 银发制御 阅读(44) 评论(0) 推荐(0)
摘要: 读入N名同学的成绩,然后将获得某一给定分数的学生人数输出第一行给出不超过10^5的正整数,即学生总数;第二行给出N名学生的百分制的成绩,中间以空格分隔;第三行给出要查寻的分数个数K,随后是K个分数,中间以空格分隔;、 #include<cstdio> int hashTable[110] = { 0 阅读全文
posted @ 2021-04-17 18:03 银发制御 阅读(49) 评论(0) 推荐(0)
摘要: 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 1 个字符的串。可用的字符包括字母 [a 阅读全文
posted @ 2021-04-17 17:40 银发制御 阅读(76) 评论(0) 推荐(0)
摘要: 此问题是指在n*n的国际象棋棋盘上 ,放置n个皇后,使得这n个皇后均不在,同一行,同一列,同一对角线上,求出合法的方案的数目。 本题可以简单转化为就是求n的全排列中的数放在棋盘上使得这几组数,符合均不在同一对角线上。 index代表列数,正序排列。 #include<cstdio> #include 阅读全文
posted @ 2021-04-17 17:38 银发制御 阅读(100) 评论(0) 推荐(0)
摘要: 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。 输入格式: 输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、 阅读全文
posted @ 2021-04-17 17:36 银发制御 阅读(107) 评论(0) 推荐(0)
摘要: 1 #include<cstdio> 2 const int maxn = 100; 3 char S[maxn][5], temp[5]; 4 int hashTable[52 * 52 * 52 + 10] = {0}; 5 //将52个字母对应到52进制中去。 6 //将A--Z对应到0--2 阅读全文
posted @ 2021-04-17 17:34 银发制御 阅读(189) 评论(0) 推荐(0)