随笔分类 - 算法
摘要:方法一:暴力解法 方法二:利用memcmp,一层for循环即可解决 方法三: KMP算法
阅读全文
摘要:书接上文。 输入一组数,找出其中满足某种条件的数。 短短的一句话,可以衍生出各种场景。今天遇到一道题,输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从大到小输出。分数均为不超过100的非负整数。 我首先想到的是利用哈希表,用空间换时间。 1 #include<iostream> 2 u
阅读全文
摘要:1.输入一组数,找出它的最大值,最小值,平均值。 关键点是要把第一个数赋值给min,max,sum 2.输入一组数,找出最接近的两个数。 3.输入一组数,找出第二大的数。 思路:利用两个变量,一个存储用来最大数(初始化为输入的第一个数),一个用来存储第二大的数(初始化为-INT_MAX),输入过程中
阅读全文
摘要:设将n个整数存放在一维数组R中。设计一个算法,将R中的序列循环左移P个位置,即将R中的数据由{X0,X1,X2....Xn-1} 变换为{Xp,Xp+1,...,Xn-1,X0,X1,X2...,Xp-1}。 思路:要实现R中的序列循环左移P个位置,只需要将R中前P个元素逆置,再将剩下的元素逆置,最
阅读全文
摘要:埃氏筛法求素数和构造素数表求素数是一个道理。 首先,列出从2开始的所有自然数,构造一个序列: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ... 取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉
阅读全文
摘要:假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法
阅读全文
摘要:还有一种是通过尾递归优化: 解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用
阅读全文
摘要:题目描述: 输入一个字符串,求出其中最长的回文。(回文:正着看和倒着看相同,如abba和yyxyy)。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样。输入字符串的长度不超过5000,且占据单独的一行。ying'g输出最长的回文串,如果有多个,输出起始位置最左边的。 样例输入:C
阅读全文
摘要:描述:在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 思路:若输入n=4,则矩阵中最大为4*4 = 16. 填数时,应该在最右上角位置开始,也就是第0行,第n-1列开始。列不变行向下到底端, 行
阅读全文
摘要:问题描述:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,依此类推,一共k个人,问最后有哪些灯开着? 输入n,k,输出开着的灯的编号。 k<=n<=1000 思路:定义一个存储灯的布尔类型的数组,将它们的值都
阅读全文
摘要:题面描述 有一个卡组,卡组中所有不同的卡牌都有两张。不小心遗失了一张,找出遗失的是哪张卡牌。 输入数据 输入数据的第一行为一个整数 T(1 <= T <= 10) ,表示有 T 组测试数据。每组数据的第一行为一个整数 n(2 <= n <=100000) , n 为偶数,表示一个卡组中卡牌的数量。接
阅读全文
摘要:题面描述 对于一个给定的正整数 n ,请你找出一共有多少种方式使 n 表示为若干个连续正整数的和,要求至少包括两个正整数。如 n=15 时,可以有 3 种方式:( 1+2+3+4+5 ),( 4+5+6 ),( 7+8 )。 输入数据 输入数据第一行为一个正整数 T ,表示测试数据的组数。 随后的
阅读全文
摘要:题目描述:小明报名参加了趣味运动会,运动会游戏规则如下:在一个环形跑道上,等距离放置着 N 个小球,小球按照顺时针方向从起点开始依次编号为 1 到 N ,在最短时间内取走放在跑道上尽可能多小球的选手获胜。举办方要求每个选手只能按照顺时针方向,跳过 M-1 个号码取后走下一个小球。如当 N=5 、 M
阅读全文
摘要:优点:伸展树(splay tree)是一种能自我调整的二叉搜索树(BST)。虽然某一次的访问操作所花费的时间比较长,但是平摊(amortized) 之后的访问操作(例如旋转)时间能达到O(logn)的复杂度。对于某一个被访问的节点,在接下来的一段时间内再次频繁访问它(90%的情况下是这样的,即符合9
阅读全文
摘要:首先标明递归的四要素: 关于(1)基准情形,是说必须有不用递归就能求解的情况。否则,递归将永远进行下去。可以看下这个例子:int badRecursion( int n ){ if ( n == 0 ) return 0; else return badRecursion ( n/3 + 1 ) +
阅读全文
摘要:还有将后缀转为中缀: 栈的其他应用: 计算后缀表达式的值
阅读全文

浙公网安备 33010602011771号