Sicily快乐之旅
文章平均质量分 53
Azure10dai
这个作者很懒,什么都没留下…
展开
-
2016/12/15 1003. Multi-key Sorting
参考:http://blog.csdn.net/chenhq1991/article/details/7865285题目本身并不难,就是将一个整数序列输入时先去掉相邻重复的,然后再从后开始记录最后(从后开始的话就是最早的)一个已存在的整数,后面相同的则不再记录,最后输出即可。但是不知道为什么自己打出来的始终是超时......原版:#include #include #include原创 2016-12-15 17:14:22 · 513 阅读 · 0 评论 -
2016/11/10 1004. Huffman Coding V1
原理简单,但实现起来挺复杂的。// Problem#: 19625// Submission#: 4906423// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecommons原创 2016-11-10 18:12:15 · 1049 阅读 · 0 评论 -
2016/11/10 1003. AVL Tree
边插入边平衡。首先写好L,R,LR,RL的函数,并在每一步插入时更新balance的情况,按balance的情况,调用函数即可平衡。// Problem#: 19624// Submission#: 4906418// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlik原创 2016-11-10 18:11:09 · 385 阅读 · 0 评论 -
2016/11/10 1002. 二叉查找树的遍历
先按输入构建出二叉树,然后遍历即可。二叉查找树的建立不难,对每一个输入,从根节点出发,小的往左,大的往右,若空则插入即可。#include using namespace std;class Node{public: Node(int a = 0) { v = a; left = nullptr; right = nullptr; } Node *left; No原创 2016-11-10 18:08:47 · 728 阅读 · 0 评论 -
2016/11/10 1001. 二叉树重建
参考:http://blog.csdn.net/yong369044325/article/details/7901008用递归方法,先找出根节点,然后分左右进行递归重建。注意根节点要按引用传递。广度优先遍历则用队列实现。根节点入队,队不空时,先对队前访问,并弹出,若左不空,则左子树入队,右子树同样。#include #include #include using namespa原创 2016-11-10 18:06:51 · 440 阅读 · 0 评论 -
2016/11/10 1000. 完全二叉树
用递归方法,如果x大,就找x/2和y的,反之一样,相等则直接return。// Problem#: 19620// Submission#: 4905830// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI原创 2016-11-10 18:03:49 · 458 阅读 · 0 评论 -
2016/11/3 1000. inorder traversal for Binary Tree
只是刚好牵涉到树的遍历的非递归,顺便三种都写一下。1.前序遍历通过栈的方式,先访问根节点并入栈,在访问它的左子树,直到无左子树,此时不断提取栈顶访问其右子树即可。void preOrder2(BinTree *root) //非递归前序遍历 { stack s; BinTree *p=root; while(p!=NULL||!s.empty())原创 2016-11-10 15:43:44 · 414 阅读 · 0 评论 -
2016/11/3 1002. 二叉树
已知二叉树的前序和后序,则有多少种表示方式?前序的第一个和后序的最后一个必是根节点,若前序的第二个和后序的倒数第二个相同,则只有一颗子树,无法确定左右,表示方式x2。否则则唯一确定。递归即得。// Problem#: 19557// Submission#: 4895619// The source code is licensed under Creative Commons Att原创 2016-11-10 15:31:42 · 365 阅读 · 0 评论 -
2016/11/3 1003. 二叉树后序遍历
思路:http://www.cnblogs.com/fzhe/archive/2013/01/07/2849040.html根据二叉树的前序和中序得到后序,只需要在中序中找到与前序第一个相同的节点值,即根节点,然后把它分为左右子树递归即可。左子树递归时前序遍历需要去掉第一个,右子树递归时则两个序列都要去掉根节点及其左边的内容。#include #include #include原创 2016-11-10 15:28:26 · 746 阅读 · 0 评论 -
2016/9/29 1002. 简单计算器
首先要说的是题目里的“忽略空格!”和要考虑有小数点的情况,之前没搞清楚被坑了好久。然后就是计算器的实现方法,就是用理论课上讲的对一个字符串,首先对数字压入数字栈,如果是运算符,则根据一个表定义的大小:(直接拍了书上的笔记了)若是栈顶符号>当前检查到的符号,则弹出两个数和一个运算符进行计算,并将结果压入栈,直到进入其他情况。若是另外,当到字符串最后时,则不断运算直到符号栈空,原创 2016-09-30 20:45:31 · 863 阅读 · 0 评论 -
2016/10/20 1002. 字符串匹配
本质上就是一个KMP算法的题目,核心就是算出next数组,之后的匹配就简单了。next的算法是在书上找到的。(到处都有)#include #include using namespace std;int main(){ int n; while (cin >> n) { int* code = new int[n]; for (int i = 0; i <= n - 1;原创 2016-10-20 18:48:08 · 446 阅读 · 0 评论 -
2016/10/20 1003. Maze
原文: http://www.bubuko.com/infodetail-441181.html算法的思路是不断遍历起点开始的周围四个格子放入队列中,同时记录步数,当遍历到终点时,即可输出答案。感觉比A星算法简单,但是貌似给不出路径?只能给出步数?#include#includeusing std::cin;using std::cout;using std::endl;usin转载 2016-10-20 18:52:31 · 394 阅读 · 0 评论 -
2016/10/8 1001. 舞蹈室安排
又是一个新的套路,首先将每个时间段按结束时间排序后,遍历每个时间段,如果开始时间比前一个的结束时间晚就可以安排下去,这样子的通过数是最多的。#include #include using namespace std;class Time{public: Time(int a = 0, int b = 0) { begin = a; end = b; } int beg原创 2016-10-08 17:54:29 · 491 阅读 · 0 评论 -
2016/12/15 1002. Extended Normal Order Sort
参考: http://www.lxway.com/4044821961.htm题目的意思有毒,有很多地方是要自己不断WA去摸索的,题意定义的排序是这样的:1.小写字母按大写字母来处理;2.若一个加减号在一个数字的前面,而不在一个数字的后面,那这个加减号表示正负;3.一般字符按ASCⅡ码来处理。因此对于每个输入的字符串要做的操作是:1.数值为0的子字符串(0、00、+00原创 2016-12-15 17:11:37 · 1152 阅读 · 0 评论 -
2016/12/8 1004. 寻找第k大数字(numberk)
这个问题有很多博客讨论了,这里是STL拯救世界,直接构造出了优先序列。以后还是认真看看这个问题吧。// Problem#: 19855// Submission#: 4951919// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Li原创 2016-12-08 21:14:11 · 1719 阅读 · 0 评论 -
2016/12/8 1003. 简单哈希
原理不难,就是一个链表的建立而已。// Problem#: 19854// Submission#: 4951626// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecom原创 2016-12-08 21:12:31 · 429 阅读 · 0 评论 -
2016/12/8 1002.Babelfish
用map很简单做出来,注意下输入时getline和cin就没什么问题了。// Problem#: 19853// Submission#: 4951498// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI:原创 2016-12-08 21:11:30 · 363 阅读 · 0 评论 -
2016/12/8 1001.连通性问题
学习到的一种全新的做法,每次输入一个路径时将他们的最老祖先找到并记录,最后做出来代码短的吃惊。// Problem#: 19852// Submission#: 4951325// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Lice原创 2016-12-08 21:09:37 · 422 阅读 · 0 评论 -
2016/12/8 1000.统计数字
一开始用了最原始的方法在读入时就去遍历让每个数的存在次数+1,后来发现会超时,到网上看了博客后的做法是先全部读入然后排序,之后从第二个开始遍历,如果是相同的则存在次数+1,不同时输出并重置存在次数。原理很简单,却是完全不同层次的做法,真是佩服。// Problem#: 19856// Submission#: 4951234// The source code is licensed un原创 2016-12-08 21:07:59 · 345 阅读 · 0 评论 -
[做题笔记] 2016/12/1
1000. 1004. dijkstra算法1001. 递归,每一个点出发的最大路径=max(它所连点中出发路径的最大值+边权值)1002. 广度优先搜索同时标记即可1003. 样例只有一个。【代码】1000.// Problem#: 19818// Submission#: 4937880// The source code is licensed under Creat原创 2016-12-08 15:31:12 · 291 阅读 · 0 评论 -
2016/11/17 1002. DAG?
核心是深度优先算法遍历到已访问过的节点是即可判定是否是有向无环图。存储的结构是用链表做的。#include using namespace std;bool visited[100] = { false };bool ans = true;class Node;class Edge{public: Edge() { to = nullptr; next = nullptr原创 2016-11-24 14:00:06 · 280 阅读 · 0 评论 -
2016/11/17 1001. 图的广度优先搜索
这个比较简单,只需要按行访问未访问的元素即可(用一个数组记录是否访问的情况),同时访问后将其入队,实现广度优先。队空时遍历完成。#include #include #include using namespace std;int main(){ int n, m; cin >> n >> m; bool edge[100][100] = { false }; bool vis原创 2016-11-24 13:57:14 · 400 阅读 · 0 评论 -
2016/9/1 3 LCS
这个问题一开始看到简直无从下手啊,翻了好几篇博客才想到怎么做,发现搞懂了思路并不难。首先是第一种方法,递归(但是时间复杂度是指数级)。递归的思想就是从最后一个开始,如果两个字符串的最后一位相同,那LCS的长度就是两个串减去最后一位的LCS长度再+1。如果不相同,就是A串减去最后一位和B串的LCS长度与B串减去最后一位和A串的LCS长度中较大的那一位。不难打出代码: #include原创 2016-09-03 10:29:28 · 456 阅读 · 0 评论 -
2016/10/13 1000. 移动小球
很典型的算法题,用L R两个数组记录每个球对应的左边和右边的球标号,移动时只需要改变L R 的值即可。输出时找到最左边的后,输出它的R的值。#include using namespace std;int L[500001],R[500001] = {1};int main(){ int t; cin >> t; while (t--) { int n, m; cin原创 2016-10-13 17:38:22 · 345 阅读 · 0 评论 -
2016/9/24 1000. 卡片游戏
题目本身想要考察的应该还是链表的问题,一开始看到卡牌还想用栈来做,后面发现有插入的要求就没办法了。整个思路与链表还是挺符合的,没什么太大的问题。#include #include using namespace std;class Card{public: Card(int n = 0) { num = n; } int num;};int main(){ int原创 2016-09-24 14:20:25 · 455 阅读 · 0 评论 -
2016/5/21 1001.Format the book list
这道题是一个输出控制格式的问题。问题本身并不难理解,但要注意到题目给的是string类型,所以要用一个类型转换将最后的浮点数转换过来输出,否则格式无法控制。这里的输出格式是定点输出并保留两位小数,用fixed和setprecision(2)很容易实现。#include <iostream>#include <string>#include <iomanip>using namespace st原创 2016-05-21 20:41:34 · 511 阅读 · 0 评论 -
2016/5/21 1005. 设置输出的flag
按照题目要求,第一个是输出默认的格式,第二个是定点的输出。同样要注意setf后要unsetf。#include <iostream>#include <iomanip>using namespace std;int main(){ int n; cin >> n; for (int i = 0; i <= n - 1; i++) { doubl原创 2016-05-21 20:44:28 · 485 阅读 · 0 评论 -
2016/5/21 1004. 不使用循环
这道题初看觉得非常有意思。题目要求是用循环以外的方法来实现一个循环的功能。可以用递归的方法解决。用全局变量来控制循环的次数,然后进行递归调用来实现操作。 具体的代码如下:#include <iostream>using namespace std;int b = 1;int a;void draw(int c){ if (c != 0) { cout <原创 2016-05-21 20:38:49 · 497 阅读 · 0 评论 -
2016/5/21 1001.Format the book list
这道题是一个输出控制格式的问题。问题本身并不难理解,但要注意到题目给的是string类型,所以要用一个类型转换将最后的浮点数转换过来输出,否则格式无法控制。这里的输出格式是定点输出并保留两位小数,用fixed和setprecision(2)很容易实现。#include #include #include using namespace std;int main(){ int n原创 2016-05-21 20:23:38 · 395 阅读 · 0 评论 -
2016/5/21 1000.multiple inheritance
本题并不算难,在输出样例可以看到类之间的继承关系,接下来只需要看菜吃饭就好,没什么多说的。#include using namespace std;class Writing{public: Writing() { cout << "Writing constructor" << endl; } ~Writing() { cout << "~Writing" << endl; }};原创 2016-05-21 20:21:41 · 370 阅读 · 0 评论 -
2016/5/27 1004. 简单减法
和之前的几道题类似,只要在test里try 去调用calc,并catch 它throw出来的异常就好了。这里需要注意的是在函数名后加throw(类型)表示告诉try语句这个函数语句块里throw出来的只会是这种类型的错误。所以如果加的是throw(),就相当于是保证不会出错,不可能throw出错误来了。#include #includeusing namespace std;int ca原创 2016-05-27 18:10:30 · 502 阅读 · 0 评论 -
2016/5/27 1003. Modify StackOfIntegers
同样先满足了StackOfIntegers的基本功能。在题目要求的peek和pop判断为空时throw自定义的类EmptyStackException并写好对应的what即可。#include #include using namespace std;class EmptyStackException{public: EmptyStackException() { } st原创 2016-05-27 18:03:30 · 824 阅读 · 0 评论 -
2016/5/27 1002. Modify Date class
首先按要求把Date类完善,在重载 [ ] 符号的时候注意把特殊情况给throw出去。然后再自己写一个类IllegalSubscriptException(名字真长...),在类里写好what的就可以了。#include using namespace std;class IllegalSubscriptException{public: IllegalSubscriptExcept原创 2016-05-27 17:58:13 · 815 阅读 · 0 评论 -
2016/5/27 1001. Binary to decimal
和2016/5/27 1000. Hex to decimal 像的飞起来。把16换成2,提示信息换一下,然后judge里改动一下就好了。#include #include #include #includeusing namespace std;int judge(char a){ if (a == '0'|| a == '1') { return 1; } else原创 2016-05-27 17:55:38 · 410 阅读 · 0 评论 -
2016/5/21 1002. format the book list again~
比起上一题来这一题就比较麻烦了。首先题目给了一个类,那么输出的时候就必须是要重载<<运算符了。同时看到题目的主函数里用了leftform和rightform两个自定义的符号。那么换个思路来,就可以自己定义两个类A,B,它们有对象leftform和rightform,然后再分别重载它们的<<就好了。但是要注意到题目里的默认输出是定点右对齐,并不需要保持小数位数,而下面两种输出都是控制为两位小数。那么在原创 2016-05-21 20:40:17 · 879 阅读 · 0 评论 -
2016/5/21 Seperate by *
这道题有毒。题目有一个隐含的意思是转行‘\n’也是其中一个字符,要分的只是星号。而三不是循环次数,而是分段星号的个数...醉了醉了#include #include #include #include using namespace std;string s1[100];int main(){ int n; cin >> n; getchar();原创 2016-05-21 20:52:34 · 478 阅读 · 0 评论 -
2016/6/3 1000. Class Set
这道题要求设计的类是一个集合。然后这个集合是需要用模板实现的,也就是说可能的类型有很多种。数据成员中data很明显就是储存数据了,maxSize和count是分别记录最大元素个数和当前元素个数的int。还有比较麻烦的就是接口的实现。增加元素要注意不要重复添加,不要超过maxSize,删除要找到目标后覆盖掉,同时两个操作都要记得对count操作。列举就很简单了,看清楚最后面有没有空格就可以了。并集的原创 2016-06-04 11:02:06 · 645 阅读 · 0 评论 -
2016/9/24 1001. 猴子选大王
这道题是有两种方法做的,第一种是用链表的方式模拟整个过程,(用数组的话剔除猴子会不方便),由于不熟练+实验楼的垃圾电脑,回到宿舍后边查资料边打的。要注意到链表迭代器删除的时候(erase,remove)是会销毁掉迭代器的,同时返回一个指向下一个位置的迭代器,这时候需要注意此时不++。由于是手动++,++应放在整个循环的最末端。#include #include using namespac原创 2016-09-24 13:12:36 · 497 阅读 · 0 评论 -
2016/9/1 2 Maximum Continuous Product
直接用了遍历的方法。。。#include <iostream>using namespace std;int main(){ int n; cin >> n; for(int i=1;i<=n;i++) { int t; cin >> t; int a[t]; for(int j=0;j<=t-1;原创 2016-09-01 22:37:53 · 444 阅读 · 0 评论 -
2016/9/1 1 Word Reversal
讲道理并不算难的一个题目,只要找空格然后隔开来倒转就可以了,但是过了一个暑假没碰,还真的不是很好想起来,翻了一下各种函数的用法才打出来#include #include using namespace std;string reverse(string a){ string b = a; for (int i = 0; i <= a.length() - 1; i++) { b[原创 2016-09-01 22:32:53 · 283 阅读 · 0 评论