ACM算法习题
alex1997222
。。。。
展开
-
(计蒜客)利用栈实现表达式转换并求得结果
#include <iostream>#include <string>#include <cassert>using namespace std;template<typename Type>class Stack {private: Type* elements; int max_size, top_index; //分别...原创 2018-09-16 13:47:42 · 269 阅读 · 0 评论 -
木板灌水问题(单调栈)
题意:地上从左到右竖立着N块木板,从1到n依次编号,如下图所示。我们知道每块木板的高度,在第n块模板右侧竖立着一块高度无限大的木板,现在对每块木板依次执行如下操作:对于第i块木板,我们从其右侧开始倒水,直到水的高度等于第i块木板的高度,倒入的水淹没ai块木板(如果木板左右两侧水的高度大于等于木板高度即可视为木板被淹没)。求n次操作后,所有ai的和为多少。解决思路:什么时候谁的高度会等于...原创 2018-09-17 14:39:49 · 1874 阅读 · 1 评论 -
(PAT)1047 Student List for Course (哈希的应用)
Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course list of each student, you are supposed to output the student name lists of all the courses.Inpu...原创 2018-09-23 13:27:34 · 133 阅读 · 0 评论 -
逆波兰式的转换与计算(简单)
我们平常书写的表达式:--如2+3*4+4 又称为中缀表达式,我们可以将它转换为后缀表达式213*+4+输入有两行,第一行为逆波兰式的结果,第二行为输入表达式的正确计算结果。逆波兰式中相邻的数字或运算符之间不用输出空格保证表达式计算的合理性,不需判断除零等情况表达式的计算遵循同级运算从左向右,先乘除后加减样例输入:2+1*3+4样例输出:213*+4+9 ...原创 2018-09-18 21:25:16 · 14398 阅读 · 0 评论 -
(PAT)1084 Broken Keyboard(哈希表)
On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters corresponding to those keys will not appear on screen.Now given a string that you are supposed to...原创 2018-09-25 21:12:23 · 166 阅读 · 0 评论 -
(PAT) 1051 Pop Sequence
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of t...原创 2018-09-20 18:02:32 · 159 阅读 · 0 评论 -
(PAT)1032 Sharing (可以用数组表示地址)
To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example,...原创 2018-09-20 20:59:28 · 157 阅读 · 0 评论 -
(PAT)A1092 buy or not to buy (哈希)
1092 To Buy or Not to Buy (20 point(s))Eva would like to make a string of beads with her favorite colors so she went to a small shop to buy some beads. There were many colorful strings of beads. How...原创 2018-09-26 15:15:57 · 211 阅读 · 0 评论 -
(PAT)1050 String Subtraction(哈希,字符串读取)
Given two strings S1 and S2, S=S1−S2 is defined to be the remaining string after taking all the characters in S2 from S1. Your task is simply to calculate S1−S2 for any given s...原创 2018-09-27 19:21:59 · 194 阅读 · 0 评论 -
PAT 1039 (散列表的应用)
Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output the registered course list for each student who comes ...原创 2018-09-23 10:24:57 · 236 阅读 · 0 评论 -
PAT1085:Perfect Sequence
1085 Perfect Sequence (25 分)Given a sequence of positive integers and another positive integer p. The sequence is said to be a perfect sequence if M≤m×p where M and m are the maximum and minimum num...原创 2018-10-18 19:11:18 · 121 阅读 · 0 评论 -
(ACM)三数较小之和
题目描述:给定一个包含n(n <= 2000)个整数的无序数组,在数组中选三个数使得它们的和小于一个特殊的数,每个数字只能使用一次请实现three_sum_smaller函数,传入的nums是数组,length是元素的个数,target表示选出来的三个数的和需要小于target。返回一个整数,表示返回方法的种类数样例输入:10 3519 28 23 1 30 15 7 1...原创 2018-10-22 16:15:16 · 364 阅读 · 0 评论 -
动态规划例题2:删除最少的子元素
给定有n个数的A序列:A1,A2,A3,....An,对于这个数列,我们想得到一个子序列Ap1,Ap2...Api....Apm满足Ap1 >= Ap2>=Api <=....<=Apm从A中删除多少元素,可以得到我们所需的子序列输入73 2 4 1 2 5 3输出2解题思路,我们可以通过动态规划算法,从左到右得到各个子序列的上升子序列元素...原创 2018-10-25 11:02:08 · 436 阅读 · 1 评论 -
(计蒜客)迷宫中的英雄(邻接矩阵BFS)
500年前,Jesse是我国最卓越的剑客。他英俊潇洒,而且机智过人^_^。突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中。Jesse听说这个消息已经是两天以后了,他知道公主在迷宫中还能坚持T天,他急忙赶到迷宫,开始到处寻找公主的下落。 时间一点一点的过去,Jesse还是无法找到公主。最后当他找到公主的时候,美丽的公主已经死了。从此Jesse郁郁寡欢,茶饭不思,一年后追随公主而去了...原创 2018-10-28 21:36:40 · 516 阅读 · 1 评论 -
(计蒜客)骑马走江湖(BFS加剪枝)
江湖是什么,对于在象棋界厮杀的大钉来说,江湖就是一个矩阵,他的目标,就是在江湖之中骑着马,从他的位置出发,走到终点。当然,大钉的马也遵从中国象棋中的“马走日”的规则,而且在矩阵中,也会有一些障碍物,马不能跳到障碍物上;如果大钉的马面前有障碍物,即被“别马腿”,那么他将不能跳向有障碍物的左前和右前这两个方向。请问最少需要多少步,大钉才能骑着马跳到终点。输入格式:有多组测试样例。每...原创 2018-10-29 19:53:30 · 243 阅读 · 0 评论 -
(方法)给定一个有序数列,通过中序遍历利用数组建立起二叉查找树(PAT1064)
建树的时候,有时候没有必要大费周章地去通过结点构造一棵二叉树,我们利用各结点之间的数学关系,通过数组就可以实现一棵二叉树,假设结点序列为a,那么其左子就是a*2,右子就是a*2+1由于二叉树中序遍历的结果是一串有序序列,那么我们可以通过中序来得到一棵二叉树void leveltra(int root) { //从根节点开始遍历 if (root > n) { return...原创 2018-11-01 18:33:41 · 1354 阅读 · 0 评论 -
(PAT 1099) Build A Binary Search Tree(通过哈希思想建立结点与左右子的关系)
099 Build A 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 ...原创 2018-11-01 18:44:18 · 149 阅读 · 0 评论 -
(PAT)Insertion or Heap Sort(堆排序与插入排序)
Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it...原创 2018-11-09 14:26:05 · 533 阅读 · 0 评论 -
(PAT)1147Heaps(判断是大顶堆还是小顶堆)
In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (i...原创 2018-11-09 19:09:25 · 2273 阅读 · 0 评论 -
(计蒜客)二叉树的分裂
试写一个算法,将一棵二叉查找树,分裂成两棵二叉查找树,使得一棵的关键字都小于或等于x,另一棵的关键字都大于x本题输入输出广义表达式,空的结点上存在一个-占位符输入格式输入有两行,第一行为待操作的二叉树广义表达式第二行输入值为x输出格式输出也为两行,为分裂后的二叉树广义表达式,第二行数值为x样例输入5(2,8)3样例输出25(-,8)解题思路:...原创 2018-11-04 11:12:21 · 1480 阅读 · 0 评论 -
(计蒜客)蒜头君捡石子(堆 优先队列)
解题思路:这题可以用优先队列解决我们把所有石子距离自己的距离和石头可以扔出的最远距离构成一个优先级队列这个队列的优先级为距离自己的距离,如果距离自己的距离相同,那么优先级为可以扔出的最远距离这样我们可以构建出堆#include <iostream>#include <algorithm>using namespace std;struct ...原创 2018-11-10 16:20:50 · 325 阅读 · 0 评论 -
(PAT)N Queens Puzzle(N皇后改版)
The "eight queens puzzle" is the problem of placing eight chess queens on an 8×8 chessboard so that no two queens threaten each other. Thus, a solution requires that no two queens share the same row, ...原创 2018-11-13 18:49:07 · 280 阅读 · 0 评论 -
(PAT)1107 Social Clusters (并查集)
When register on a social network, you are always asked to specify your hobbies in order to find some potential friends with the same hobbies. A social cluster is a set of people who have some of thei...原创 2018-11-12 15:37:22 · 265 阅读 · 0 评论 -
贪心算法的应用(PAT 1070 Mooncake)
贪心法是求解一类最优化问题的方法,它总是考虑局部情况下的最优解比如在huffman树的构造中,利用贪心算法依次选取数组中权值最大的两个结点组合成新的结点,依次类推该算法确定全局结果是最优的(每一次决策都是最优的决策)比如下面这么一道题:Mooncake is a Chinese bakery product traditionally eaten during the Mid-Au...原创 2019-01-10 20:26:28 · 276 阅读 · 1 评论 -
(PAT 1038) Recover the Smallest Number(贪心算法)
Given a collection of number segments, you are supposed to recover the smallest number from them. For example, given { 32, 321, 3214, 0229, 87 }, we can recover many numbers such like 32-321-3214-0229...原创 2019-01-11 12:46:03 · 239 阅读 · 0 评论 -
(PAT) 1022 Digital Library (利用映射map存储数据,以及输入输出控制)
A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and published years. Each book is assigned an unique 7-digit number a...原创 2019-01-17 14:08:11 · 156 阅读 · 0 评论 -
PAT 1067 Sort with Swap(0, i) (贪心法)
Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order. But what if Swap(0, *) is the ONLY operation that is allowed to use? For example, to sort {4, 0, 2...原创 2019-01-11 17:35:34 · 182 阅读 · 0 评论 -
(PAT 1002) A+B for Polynomials(利用双指针和归并排序思想)
This time, you are supposed to find A+B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each case occupies 2 lines, and each line contains the informa...原创 2019-01-17 17:39:44 · 218 阅读 · 0 评论 -
(PAT) 1085 Perfect Sequence (Upper_Bound二分的使用)
Given a sequence of positive integers and another positive integer p. The sequence is said to be a perfect sequence if M≤m×p where M and m are the maximum and minimum numbers in the sequence, respecti...原创 2019-01-13 13:49:01 · 142 阅读 · 0 评论 -
(PAT 1044)Shopping in Mars (二分法lower_bound)
1044 Shopping in Mars (25 分)Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the payment, the cha...原创 2019-01-13 17:40:43 · 166 阅读 · 0 评论 -
(PAT 1015) Reversible Primes (进制转换+判断素数)
A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a pr...原创 2019-01-23 18:25:35 · 268 阅读 · 0 评论 -
(PAT 1056) Mice and Rice (队列+模拟)
Mice and Rice is the name of a programming contest in which each programmer must write a piece of code to control the movements of a mouse in a given map. The goal of each mouse is to eat as much rice...原创 2019-01-18 17:25:24 · 264 阅读 · 0 评论 -
1093 Count PAT's (递推)
1093 Count PAT's (25 分)The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and ...原创 2019-01-14 11:55:06 · 172 阅读 · 0 评论 -
(PAT 1110) Complete Binary Tree (判断完全二叉树)
Given a tree, you are supposed to tell if it is a complete binary tree.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (≤20) wh...原创 2019-01-24 14:07:50 · 236 阅读 · 0 评论 -
(PAT 1052) Linked List Sorting (链表)
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now give...原创 2019-01-19 16:30:31 · 152 阅读 · 0 评论 -
(PAT 1105) Spiral Matrix (WQNMD坑爹模拟题系列)
This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasing order. A spiral matrix is filled in from the first element at the upper-left corner, then move in...原创 2019-01-24 19:23:57 · 381 阅读 · 0 评论 -
(PAT 1021) Deepest Root (广度优先遍历求层数)
A graph which is connected and acyclic can be considered a tree. The hight of the tree depends on the selected root. Now you are supposed to find the root that results in a highest tree. Such a root i...原创 2019-01-24 21:02:20 · 543 阅读 · 0 评论 -
(PAT 1097) Deduplication on a Linked List (链表)
Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated absolute values of the keys. That is, for each value K, only the first node of which the value or a...原创 2019-01-19 18:23:17 · 335 阅读 · 0 评论 -
(PAT)The Best Rank(哈希查找加排序)
1012 The Best Rank (25 分)To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or L...原创 2019-01-09 16:12:09 · 189 阅读 · 0 评论 -
(PAT 1134) Vertex Cover (图中边和顶点的关系)
A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex of the set. Now given a graph with several vertex sets, you are supposed to tell if e...原创 2019-01-25 15:40:57 · 494 阅读 · 0 评论