错题大总结
文章平均质量分 65
错题是个好东西,加以改正会有许多好处。
TOP-SECRET
这个作者很懒,什么都没留下…
展开
-
C++贪心算法之删数问题
删数问题题目描述思路分析代码实现#includeusing namespace std;string n; //定义字符串nint s;main(){ cin>>n>>s; int len=n.size(); //也可以用n.length()来取字符串n的长度 while(s--) for(int i=0;i<len;i+原创 2017-08-18 13:03:07 · 6271 阅读 · 2 评论 -
C++贪心算法之最小新整数
最小新整数Description给定一个十进制正整数n(0 现在从m位中删除k位(0例如: n = 9128456, k = 2, 则生成的新整数最小为12456Input第一行t, 表示有t组数据;接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。Outputt行,每行一个数字,表示从n中删除k位后得到的最小整数。Sampl原创 2017-08-18 13:21:23 · 5139 阅读 · 1 评论 -
C++贪心算法之乘船问题
乘船问题描述进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。输入原创 2017-08-18 13:49:00 · 4598 阅读 · 0 评论 -
C++贪心算法之均分纸牌
均分纸牌题目描述有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。原创 2017-08-18 17:10:15 · 8547 阅读 · 5 评论 -
C++贪心算法之装箱问题
装箱问题Description一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你原创 2017-08-19 12:15:36 · 9912 阅读 · 0 评论 -
C++动态规划算法之拦截导弹
拦截导弹Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最原创 2017-06-11 22:46:25 · 6593 阅读 · 0 评论 -
C++记忆化搜索算法与动态规划算法之公共子序列
公共子序列Description我们称序列Z = 1, z2, ..., zk >是序列X = 1, x2, ..., xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = 是X = 的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找原创 2017-07-10 16:06:13 · 1874 阅读 · 0 评论 -
最短编辑距离
1.最短编辑距离的介绍①基本定义 所谓编辑距离(Edit Distance),是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作总共有三个:将一个字符替换成另一个字符、插入一个字符或者删除一个字符。讲道理的话,编辑距离越小,两个字符串就越相似。对了,它又叫作Levenshtein距离,因为这个概念是在1965年由俄罗斯科学家Vladimir L原创 2017-07-12 17:59:35 · 2452 阅读 · 3 评论 -
C++动态规划算法之计算字符串距离
计算字符串距离Description对于两个不同的字符串,我们有一套操作方法来把他们变得相同,具体方法为:修改一个字符(如把“a”替换为“b”)删除一个字符(如把“traveling”变为“travelng”)增加一个字符(如把“son”改成“song”)比如对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。无原创 2017-07-13 09:49:35 · 2901 阅读 · 0 评论 -
C++基础练习题之打怪
打怪Description电视剧里奥特曼和怪兽打了起来。怪兽会三个招数,分别用字符’R’, ‘B’,’L’表示。奥特曼为了应对这三招,需要对应使出‘S’、‘K’、‘H’等三招。如果怪兽按任意的顺序连续使出’R’, ‘B’,’L’这三招(称为“组合拳”),则威力大增。奥特曼必须使出终极大招才能战胜,用‘C’表示。奥特曼的终极大招可以一次性化解怪兽的一次组合拳。怪兽后续出招要么是单独的原创 2017-07-15 09:33:32 · 2651 阅读 · 0 评论 -
C++广度优先搜索算法之仙岛求药
仙岛求药Description少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M×N个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来原创 2017-06-09 20:59:27 · 1950 阅读 · 1 评论 -
C++递归算法之爬楼梯
爬楼梯Description树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级也可以第一次走两级,第二次走一级,一共3种方法。Input输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 Output不同的走法数,每一行输入对应一行输出Sample Input5810原创 2017-07-04 18:39:32 · 7033 阅读 · 0 评论 -
C++递归递推算法之三角形划分平面区域
三角形划分平面区域Description1个三角形将平面划分成内、外 2 个区域。2 个三角形最多将平面划分成 8个区域,如下图所示。给定三角形数量 n,求 n 个三角形最多将平面划分成多少个区域。Input第1行:1个整数n(0Output第1行:1个整数,表示最多划分的平面区域数量Hint0思路解析原创 2017-07-15 12:01:25 · 1356 阅读 · 0 评论 -
C++搜索与回溯算法之符号三角形
符号三角形Description 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同。 n=7时的1个符号三角形如下:+ + - + - + ++ - - - - +- + + + -- + + -- + -- -+Input原创 2017-07-12 12:21:37 · 1597 阅读 · 0 评论 -
C++搜索算法和曼哈顿距离之最少连通代价
最少联通代价Description在一个N行M列的字符网格上,恰好有 2 个彼此分开的连通块。每个连通 块的一个格点与它的上、下、左、右的格子连通。如下图所示:现在要把这 2 个连通块连通,求最少需要把几个’.’转变成’X’。上图的例子中, 最少只需要把 3 个’.’转变成’X’。下图用’*’表示转化为’X’的格点。Input第1行:2个整数原创 2017-07-15 11:30:56 · 2480 阅读 · 0 评论 -
C++搜索与回溯算法之LETTERS(字母)
LETTERS(字母)DescriptionA single-player game is played on a rectangular board divided in R rows and C columns. There is a single uppercase letter (A-Z) written in every position in the boa原创 2017-07-03 16:45:03 · 3145 阅读 · 0 评论 -
C++枚举算法之鸡兔同笼
鸡兔同笼Description一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。Input一行,一个正整数a (a Output一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。如果没有满足要求的答案,则输出两个0,中间用一原创 2017-07-06 14:26:44 · 4421 阅读 · 1 评论 -
C++枚举算法之满足条件的整数
满足条件的整数Description 假设a、b、c均为整数,且满足a,b,c 大于1,并且小于等于100,找出所有符合条件:“a2+ b2= c2”的整数组。Input 无。Output 按a从小到大的顺序输出所有满足条件的整数组(若a相同,则按b从小到大的顺序输出),每行一组,每一组数据的输出样式为: a*a + b*b = c*c注意 1)为避免重复输出,要求a<=b; 2原创 2017-07-06 16:30:06 · 2162 阅读 · 0 评论 -
C++枚举算法之和数
和数 - Description给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 - Input共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个不大于10000的正整数组成的数列,相邻两个整数之间用单个空格隔开。 - Output一个整数,即数列原创 2017-07-06 16:42:04 · 3132 阅读 · 3 评论 -
C++搜索与回溯算法之单词接龙
----------------------*单词接龙*----------------------Description单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为b原创 2017-07-09 10:56:04 · 3011 阅读 · 0 评论 -
C++动态规划算法之采药
采药Description辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到原创 2017-07-10 12:04:22 · 2078 阅读 · 0 评论 -
C++动态规划算法之Maximum sum(最大和)
Maximum sum(最大和)DescriptionGiven a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below: t1 t2 d(A) = max{ ∑ai + ∑aj | 1 <= s1 <= t1 <原创 2017-07-11 11:36:58 · 4596 阅读 · 0 评论 -
C++排序算法之快速排序
快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码如下(从小到大):#includeint n,num[10000];void qsort(int left,int right) //快速排序{ int i,j,midd原创 2017-05-21 12:57:58 · 485 阅读 · 0 评论 -
C++排序算法之归并排序
归并排序:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。代码如下(从小到大):#includeint n,num[10000],r[10000]; //num是待排序数组,r是临时数组void mergesort(int s,原创 2017-05-21 13:40:19 · 486 阅读 · 0 评论 -
C++搜索与回溯算法之迷宫问题
迷宫问题:一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走,用'#'表示;有的格子是空地,可以走,用'.'表示;。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入R、C和迷宫,输出所有路径。代码如下:原创 2017-05-23 06:14:11 · 3210 阅读 · 1 评论 -
C++搜索与回溯算法之The Castle
The Castle(想看翻译的朋友,请单击☀;想看代码的朋友,请单击☆)Description 1 2 3 4 5 6 7 #############################1 # | # | # | | # #####---#####原创 2017-06-24 14:12:36 · 1795 阅读 · 0 评论 -
C++搜索与回溯算法之城堡问题
城堡问题Description 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#...原创 2017-06-24 13:51:04 · 1647 阅读 · 1 评论 -
C++之小学奥数(1)
题目描述:ABCD* E DCBA 按以上格式输出ABCDE的值(A!=B&&A!=C&&A!=D&&A!=E&&B!=C&&B!=D&&B!=E&&C!=D&&C!=E&&D!=E)。 解题思路:看到这道题之后,许多人想到的是枚举,就像这样:#includeusing namespace std;int main() {原创 2017-05-30 14:07:56 · 3556 阅读 · 0 评论 -
C++之小学奥数(2)
求出第k小排列题目描述给出两个正整数n,k(n//也就是说要求全排列出来后的第k个数输入只有一行:两个整数,n(n输出输出该排列样例输入4 3样例输出1324题目分析当n==4时,所有的全排列(数)如下:1234,1243,1324,1342,1423,1432;2134,2143,2314,2341,241原创 2017-06-03 15:37:59 · 2403 阅读 · 0 评论 -
C++搜索与回溯算法之棋盘问题
棋盘问题Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋原创 2017-06-11 14:51:23 · 3160 阅读 · 0 评论 -
C++搜索与回溯算法之置棋问题
置棋问题题目描述在M*N的主格中任意指定X个格子构成一个棋盘,而其它格子是残缺的,不能放棋子。在任一个构成的棋盘上放置K个棋子,要求任意两个棋子不得位于同一行或同一列上。求满足条件的所有方案数。注意:棋盘是稀疏的,即X<(M*N)/2编程任务:1. 对给定的一个棋盘,求出该棋盘可放置的最多的棋子数P;2. 该棋盘上恰好放置i个棋子时的方案总数(1≤i≤P),其中经旋转和原创 2017-06-21 13:45:51 · 883 阅读 · 0 评论 -
C++动态规划算法之最长上升子序列
最长上升子序列Description一个数的序列bi,当b1 b2 bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2, ..., aN),我们可以得到一些上升的子序列(ai1,ai2, ...,aiK),这里1 <=i1 i2 < ... <iK 你的任务,就是对于给定的序列,求出最长上升子序列的长度。Input输入的第一行原创 2017-06-11 22:35:11 · 2048 阅读 · 0 评论 -
C++广度优先搜索算法之迷宫问题
迷宫问题Description定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下原创 2017-06-12 13:41:58 · 3674 阅读 · 0 评论 -
C++递归算法之2的幂次方表示
2的幂次方表示:任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示) 3=2+20所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+原创 2017-05-22 13:43:41 · 10011 阅读 · 5 评论 -
C++搜索与回溯算法之拆数
版本一:题目描述输入自然数N,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。输入第1行:1个整数n(n≤30)输出所以拆分方案,顺序见样例。样例输入4样例输出3+12+22+1+11+1+1+1代码如下:#include #include int num[40],to原创 2017-05-28 14:28:26 · 2678 阅读 · 0 评论 -
C++搜索与回溯算法之马走日(遍历问题)
马走日Description马在中国象棋以日字形规则移动。请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。Input第一行为整数T(T 每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0Output每组测试数据包含原创 2017-06-17 12:07:17 · 10309 阅读 · 2 评论 -
C++排序算法之希尔排序
希尔排序:是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。代码如下:#include int n,num[10000];void shell_sort() { int i,j,x,d; d=n/2; while(d) { for (i=d+1;i<=n;i++) { x=n原创 2017-05-21 13:45:36 · 552 阅读 · 0 评论 -
C++搜索与回溯算法之字符串全排列
给定一个字符串,生成其中字符的所有的排列。(长度:最长10000,且所有排列按字典序输出)代码如下:#include #includeint check[360]; //用于存储每个字母的数量(Ascll码存储法),以此来判断是否可以使用该字母char word[10000]; //用于存储字母,方便输出char str[10000]; //字符数组int len; //用原创 2017-05-28 19:42:23 · 2038 阅读 · 0 评论 -
C++搜索与回溯算法之母亲的牛奶
母亲的牛奶题目描述农民约翰有三个容量分别是A,B,C升的桶,A、B、C分别是三个从1到20的整数。最初,A和B桶都是空的,而C桶是装满牛奶的。有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。由于节约,牛奶不会有丢失。写一个程序去帮助约翰找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。输入第1行:3个整数A,B和C。输出第原创 2017-06-20 13:50:22 · 1189 阅读 · 0 评论 -
C++广度优先搜索算法之Dungeon Master
Dungeon Master(地下城大师)Description(描述)You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It take原创 2017-06-15 13:15:26 · 2107 阅读 · 0 评论