PAT
马管子
这个作者很懒,什么都没留下…
展开
-
05-图2. Saving James Bond - Easy Version (25)
1 边界和湖心小岛分别算一个节点,连接所有距离小于D的鳄鱼,时间复杂度O(N2)2 判断每个连通图的节点中是否包含边界和湖心小岛,是则Yes否则No3 冗长混乱的函数参数#include #include #include #include using namespace std;struct Coordinate{ float x; float原创 2015-06-03 00:16:20 · 950 阅读 · 0 评论 -
PAT 02-线性结构3. Pop Sequence (25)
http://www.patest.cn/contests/mooc-ds2015spring/02-%E7%BA%BF%E6%80%A7%E7%BB%93%E6%9E%843Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop rando原创 2015-03-25 21:30:08 · 1203 阅读 · 0 评论 -
二叉树后序遍历的非递归算法
void PostOrderTraversal(TreeNode* binTree){ TreeNode* tree = binTree; LinkStack* stack = CreateLinkStack(); TreeNode* tempNode = NULL; while (tree || !IsEmpty(stack)) { w原创 2015-03-31 13:19:49 · 763 阅读 · 1 评论 -
时间效率O(N)的排序
功能:给定一堆数,已知所有数都不是-1,用O(N)时间对它们进行排序。int main(void){ int n = 0; int* tempInput = (int*) malloc(sizeof(int) * MAXSIZE); // 所有元素全部置-1 for (int i = 0; i < MAXSIZE; i++) {原创 2015-04-11 16:21:22 · 431 阅读 · 0 评论 -
05-树8. Huffman Codes (30)
http://www.patest.cn/contests/mooc-ds2015spring/05-%E6%A0%918思路:首先按给定的字符的频率和编码来构建一棵哈夫曼树构建完成之后判断 1.编码最后一位所在的节点是否存在孩子 2. 是否有不同的编码的最后一位占据了相同的节点 3. 是否存在节点只有一个孩子 4. 如果上述错误情况都未出现,那么计算给定的编码的总权重,然后再原创 2015-05-04 22:11:01 · 543 阅读 · 0 评论 -
05-图3. 六度空间 (30)
1 1500ms时间可以大方挥霍2 内存一般也可以挥霍,但是要记得释放用完的内存,否则可能累积到内存超限3 BFS分层注意细节,下三角矩阵找邻接节点也要注意细节#include #include #include using namespace std;bool* CreateMatrixGraph(const int& N){ int arraySize原创 2015-06-04 12:35:48 · 1221 阅读 · 0 评论 -
06-图4. Saving James Bond - Hard Version (30)
该题的关键是题干最后一句:如果有不同的路线都是最短路,那么输出第一跳最短的路线。解决方法是把湖心小岛周围一圈的节点(即距离湖心小岛小于D的鳄鱼)看作起点,对这些起点依次调用无权最短路算法,找出路径最短(且相同)的那些起点,然后比较从湖心小岛到它们的距离,输出最小的距离所在的路径即可。#include #include #include #include #include #原创 2015-06-15 22:57:43 · 582 阅读 · 0 评论 -
03-树1. List Leaves (25)
#include #include typedef int ElementType;struct TreeNode{ ElementType data; TreeNode* left; TreeNode* right;};TreeNode* CreateTreeNode(){ TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode)); node->原创 2015-03-25 21:31:52 · 525 阅读 · 0 评论 -
02-线性结构2. Reversing Linked List (25)
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K = 3, then you must output 3→2→1→6→5→4; if K原创 2015-04-07 23:25:15 · 1636 阅读 · 0 评论 -
04-树5. Complete Binary Search Tree (30)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node's key.The righ原创 2015-04-11 23:48:23 · 442 阅读 · 0 评论 -
C++ 链表实现构造Huffman树
浙江大学的教材《数据结构》第146页上的用堆构建哈夫曼链表树的函数的实现1. 函数结构与书中代码相同。堆中元素为指向哈夫曼树的节点的指针:struct HuffmanTree{ int weight; HuffmanTree* left; HuffmanTree* right;};struct MinHeap{ HuffmanTree** da原创 2015-04-29 00:07:52 · 1021 阅读 · 0 评论 -
06-图1. List Components (25) (邻接表实现)
繁难的二逼邻接表法 为了不拉低智商请勿模仿#include #include #include using namespace std;const int MAXSIZE = 1000;typedef int ElementType;struct ListNode{ ElementType Data; ListNode *Next;};L原创 2015-05-30 19:08:49 · 486 阅读 · 0 评论 -
06-图1. List Components (25) (邻接矩阵实现)
轻松愉快的邻接矩阵,“现在空间还是问题么?”#include #include #include using namespace std;int* CreateMatrixGraph(const int& N){ int* graph = (int*) malloc(sizeof(int) * N * N); for (int i = 0;i < N * N原创 2015-05-30 22:40:09 · 468 阅读 · 0 评论