算法刷题笔记
算法刷题笔记,北邮机试模板
A_Hou
Just Wanna To Be Better !
展开
-
Java框架有关
1、JSP+Servlet+JavaBean+Dao模式介绍: https://blog.csdn.net/yjtacx/article/details/99632812、Java的三大框架介绍:三大框架:Struts+Hibernate+SpringJava三大框架主要用来做WEN应用。①Struts主要负责表示层的显示②Spring利用它的IOC和A...原创 2019-03-29 21:35:05 · 190 阅读 · 0 评论 -
北邮机试模板
一、转自大佬:https://blog.csdn.net/TQCAI666/article/details/85600413,只为学习,侵删二、目录:基本操作 1C++ 常用头文件和宏定义 1输入输出 2二分 3排序 3图论 4基本数据结构 4最短路径 5最小生成树 8数据结构 9并查集 9二叉树的各类题型 10Huffman树 13线...原创 2019-03-28 15:40:54 · 815 阅读 · 3 评论 -
部分北邮往年机试题汇总
去往大佬博客的传送门:https://blog.csdn.net/TQCAI666/article/details/88770049原创 2019-03-28 15:38:30 · 1642 阅读 · 0 评论 -
B1002 写出这个数 (20 分)
1002写出这个数(20分)读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321...原创 2019-03-22 15:36:09 · 278 阅读 · 0 评论 -
PAT 之C++部分输出问题 printf/cout/fgets
一、有关printf输出string字符串类型的问题1.printf函数输出字符串是针对char *的,即printf只能输出c语言的内置数据,而string不是c语言的内置数据。2.string类型的对象不止包含字符串,还包含了许多用于操作的函数,所以&str并非字符串的首地址。3.如需输出string对象中的字符串,可以使用string的成员函数c_str(),该函数返回字...原创 2019-03-22 15:30:32 · 281 阅读 · 0 评论 -
最大公约数和最小公倍数(递归)
一、最大公约数题目:求6105和2146的最大公约数思路:辗转相除法(欧几里得算法)例子说明:6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37...原创 2019-03-17 20:59:11 · 2515 阅读 · 0 评论 -
bits/stdc++.h 头文件
#include<bits/stdc++.h>包含了目前C/C++所包含的所有头文件://C头文件#ifndef _GLIBCXX_NO_ASSERT#include <cassert>#endif#include <cctype>#include <cerrno>#include <cfloat>#include ...原创 2019-03-14 17:21:16 · 1215 阅读 · 0 评论 -
快速幂(二分幂)——《算法笔记》
一、题目:给定三个正整数a,b,m(),求a^b%m二、快速幂算法(基于二分法思想): ①如果b是奇数,则; ②如果b是偶数,则三、递归写法(时间复杂度O(log b))://求a^b%m,递归写法long long binaryPow(long long a, long long b, long long m)//long long 类型防止溢出{ i...原创 2019-03-14 11:28:05 · 687 阅读 · 0 评论 -
关于PAT报错:warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result
1、PAT真的严(e)格(xin)!!! 2、一般是你的输入输出格式问题!严格检查自己的输入输出是否符合题目要求,不要有多余的输入输出(画蛇添足→_→|||)。3、附上大佬的解决方案:https://www.e-learn.cn/content/wangluowenzhang/88661 (包含多种解决方法,但“回答二”和“回答三”方法较简单)4、其实如果程序能通过,warnin...原创 2019-01-23 21:47:04 · 27607 阅读 · 2 评论 -
2016年北邮机试真题(计算机? or 网研?)
1.三元组问题描述给你一个长度为m的数组(数组元素从0到m-1),如果数组里有a[i]+a[j]==a[k](i,j,k大于等于0并且小于m),便称之为三元组。现在给你一个数组,让你求三元组的个数。例如m为2,里面的元素为(0,0)那么三元组为(a[0],a[0],a[0])(a[0],a[0],a[1])(a[0],a[1],a[0])(a[0],a[1],a[1...原创 2019-03-28 09:27:51 · 371 阅读 · 0 评论 -
2017北邮机试(计算机?or 网研?)
Problem A题目:设一个正整数既是平方数又是立方数时,称其为special数。 输入包含多组测试数据,第一行输入测试数据的组数,接着在后续每行输入n(n<= 1000000000)的时候, 请输出1到n中包含的所有special数的个数。样例输入:31641000000000样例输出:1231...原创 2019-03-27 11:11:04 · 602 阅读 · 0 评论 -
2018北邮网研院机试
Problem A题目: 类似超市结账,计算购买的商品的总价格。输入:第一行为测试数据组数T(0< T <= 10)每组数据第一行为购买商品的种类n,接下来n行,每行两个数据,第一个为商品价格,第二个为商品数量,价格为实型。输出:每一行输出相对应数据的总价值,保留两位小数。样例输入:221.00 20.50 21100.0 1输出...原创 2019-03-26 21:11:49 · 1091 阅读 · 0 评论 -
最长回文串——多种方法,未完待续
题目概述:给出一个字符串a,求a的最长回文子串。样例输入:PATZJUJZTACCBCC样例输出:9参考代码一(动态规划):思路:(过几天再写吧)#include<bits/stdc++.h>#define maxn 1000using namespace std;int dp[maxn][maxn];char a[maxn];...原创 2019-03-25 16:12:50 · 267 阅读 · 0 评论 -
最长公共子序列(LCS)——动态规划
问题概述: 给定两个字符串(或者数字序列)a和b,求一个字符串,使得这个字符创是a和b的最长公共部分(子序列可以不连续)。样例输入:sadstoryadminsorry样例输出:6//最长公共子序列为adsory思路:(过几天再写吧)参考代码:#include<bits/stdc++.h>#define maxn 1000u...原创 2019-03-25 15:18:55 · 265 阅读 · 0 评论 -
最长不下降子序列(LIS)——动态规划
题目概述: 在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降(非递减)的。样例输入:81 2 3 -9 3 9 0 11样例输出:6思路:(过几天再写吧。。。)参考代码:#include<bits/stdc++.h>#define maxn 1000using namespace std...原创 2019-03-25 14:53:43 · 979 阅读 · 0 评论 -
最大连续子序列和——动态规划
题目概述: 给定一个数字序列A1,A2,...,An,求i,j(1≤i≤j≤n),使得Ai+,...,+Aj最大,输出这个最大和。样例:-2 11 -4 13 -5 -2显然11+(-4)+3=20为和最大的选值情况,因此最大和为20思路:1、因为dp[i]要求是必须以A[i]结尾的连续序列,那么只有两种情况:①这个最大和的连续序列只有一个元素,即...原创 2019-03-25 08:48:53 · 2665 阅读 · 0 评论 -
数塔问题——动态规划的递推写法
题目概述:求从顶部出发在每一个节点可以选择向左或者向右走,一直走到底层,要求找出一条路径,使得路径上的数字之和最大.。(如下图)代码:#include<bits/stdc++.h>#define maxn 1000using namespace std;int dp[maxn][maxn],f[maxn][maxn];int main(){ int...原创 2019-03-24 19:36:34 · 1200 阅读 · 0 评论 -
Fibonacci数列的第n项的输出——动态规划的递归写法
一、动态规划:将一个复杂问题分解成为若干个小问题(必须是重叠子问题),通过综合小问题的最优解得到复杂问题的最优解。特别注意在计算小问题的最优解的过程中会将小问题的解记录下来,在后面可以直接应用而不用再次计算,从而节省了时间。二、题目概述:输出Fibonacci数列的第n项代码一(普通递归):注:由于在计算F(5)=F(4)+F(3)和F(3)=F(2)+F(1)时会重复计算F...原创 2019-03-24 17:17:49 · 1192 阅读 · 0 评论 -
91. 文件系统——北邮oj
91. 文件系统时间限制1000 ms内存限制65536 KB题目描述现在很多操作系统的文件系统都是基于树形结构设计的。即一个目录下可以有若干个目录和文件,而每个目录和文件都可以通过一条从根目录出发的唯一路径来唯一确定。我们希望你实现对这样的一个文件系统的简单管理。为了简化问题,我们做出如下假设:假设文件系统初始时只有一个根目录root。假设所有出现的文件和目录的名字都是唯...原创 2019-03-24 10:28:36 · 354 阅读 · 0 评论 -
90. 字符串转换——北邮oj
90. 字符串转换时间限制1000 ms内存限制65536 KB题目描述我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串。现在给你一个仅由小写字母组成的字符串,你需要用最小的花费,将其转换成一个简单串。 花费的计算规则如下:将a到z这26个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为a的左邻居是z,z...原创 2019-03-23 19:59:29 · 275 阅读 · 0 评论 -
89. 统计时间间隔——北邮oj
89. 统计时间间隔时间限制1000 ms内存限制65536 KB题目描述给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中x和y分别代表小时和分钟。0≤x<24,0≤y<60。输入格式第一行为数据组数T(1≤T≤50000)。每组数据包括两行,分别代表两个时间输出格式每组数据输出一行,表示最少经...原创 2019-03-23 16:20:18 · 196 阅读 · 0 评论 -
88. 最值问题——北邮oj
88. 最值问题时间限制1000 ms内存限制65536 KB题目描述给出N个数,求出这N个数中最大值和次大值。注意这里的次大值必须严格小于最大值。输入保证N个数中至少存在两个不同的数。输入格式第一行为测试数据的组数T(T≤20)。请注意,任意两组测试数据之间是相互独立的。每组数据包括两行:第一行为一个整数N(1≤N≤1000)。第二行为N个正整数,每个整数均不大于...原创 2019-03-23 15:42:58 · 220 阅读 · 0 评论 -
87. 日期——北邮oj
87. 日期时间限制1000 ms内存限制65536 KB题目描述请你计算出第X年Y月Z日是第X年的第几天。其中,1月1日是第一天,1月2日是第二天,以此类推。计算时请注意闰年的影响。对于非整百年,年数能整除4是闰年,否则不是闰年;对于整百年,年数能整除400是闰年,否则不是闰年。如1900年和1901年不是闰年,而2000年和2004年是闰年。输入格式第一行有一个整...原创 2019-03-23 15:40:56 · 161 阅读 · 0 评论 -
BFS——迷宫最短路径
题目概述: 给定一个n×m的迷宫矩阵,其中*代表墙壁,不可通过;而“ · ”代表平地,可以通过;S代表起点,T代表终点。移动过程中,当前位置为(x,y),且每次只能向上下左右(x,y+1),(x,y-1),(x+1,y),(x-1,y)的平地移动,求S到T的最短步数。其中迷宫矩阵如下S(2,4) T(4,3): ...原创 2019-03-22 11:29:56 · 408 阅读 · 1 评论 -
BFS——矩阵中“相邻”元素的个数
问题概述: 给出一个N×M矩阵,对于矩阵元素(x,y)称其上下左右四个位置(x,y+1),(x,y-1),(x+1,y),(x-1,y)是“相邻”的。如果一个矩阵的元素中只有0,1,若有若干个1是相邻的,则这些1就构成了一个“块”,求矩阵中块的个数。例如:6×7矩阵中,块的个数为40 1 1 1 0 0 10 0 1 0 0 0 00 0 0 0 1 0 00 ...原创 2019-03-22 10:52:49 · 2032 阅读 · 0 评论 -
DFS——选数字
题目概述: 如从4个数字{2,3,3,4 }中选2个数字使其和为6,求平方和最大的方案。思路: 类似于背包问题,但不同的是要输出最佳的方案,因此需要使用STL中的vector(“变长数组”)来存储方案。关键在于如何使选中“index”的方案不影响不选中“index”的方案。代码:#include<cstdio>#include&l...原创 2019-03-22 09:30:42 · 258 阅读 · 0 评论 -
01背包问题——DFS/动态规划
问题概述:有N件物品和一个容量为V的背包。第 i 件物品的价格(即体积,下同)是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大,求最大价值。(1≤n≤20)代码一:(DFS:递归遍历,每种物品选和不选的两种结果,所有情况都遍历)#include<cstdio>using namespace std;const ...原创 2019-03-21 21:48:13 · 1378 阅读 · 2 评论 -
A1032 Sharing (25 分) ——PAT (Advanced Level) Practice
1032Sharing(25分)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...原创 2019-03-21 20:45:04 · 119 阅读 · 0 评论 -
素数
题目:输出1-100内的所有素数代码一(O()):#include<stdio.h>#include<math.h>#include<stdbool.h>bool isprime(int n){ //判断是不是素数 if(n<=1) return false; int sqr=(int)sqrt(1.0*n...原创 2019-03-18 10:24:30 · 125 阅读 · 0 评论 -
《算法笔记》——4.7.3随机选择算法
题目:给定一个整数(各不相同)组成的集合,现将其分成两个集合,要求两级集合交集为空,并集为整个集合同时要求两个自己和元素个数n1和n2的差的绝对值|n1-n2|尽可能小的前提下,要求它们各自元素之和S1和S2之差的绝对值|S1-S2|尽可能大。求|S1-S2|思路:1、最直接的想法就是从小到大排序,取前n/2个元素为一个集合,剩下的元素为另外一个集合,时间复杂度为O(nlogn)....原创 2019-03-17 12:51:53 · 397 阅读 · 0 评论 -
B1040/A1093 有几个PAT (25 分)(思想同B1045)(处理超时问题的一些技巧与算法)(活用递推)
1040有几个PAT(25分)字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第 2 位(P),第 4 位(A),第 6 位(T);第二个PAT是第 3 位(P),第 4 位(A),第 6 位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:...原创 2019-03-16 22:31:06 · 140 阅读 · 0 评论 -
B1045/A1101 快速排序 (25 分)(思想类似B1040题)(处理超时的问题时的一些技巧与算法)(活用递推)
1045快速排序(25分)著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?例如给定 $N = 5$, 排列是1、3、2、4、5。则:1 的左边没有元素,右边的元素都比它大,所以它可能是主元; ...原创 2019-03-16 21:53:40 · 158 阅读 · 0 评论 -
1035 插入与归并 (25 分)
1035插入与归并(25分)根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和...原创 2019-03-16 11:07:02 · 1818 阅读 · 2 评论 -
1030 完美数列 (25 分)
1030完美数列(25分)给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M≤mp,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式:输入第一行给出两个正整数N和p,其中N(≤105)是输入的正整数的个数,p(≤109)是给定的参数。第二行给出N个正整数,每个数...原创 2019-03-15 11:13:37 · 387 阅读 · 0 评论 -
归并排序(2-路归并排序)
递归写法:#include<bits/stdc++.h>#define maxn 100void merge(int A[],int l1,int r1,int l2,int r2) //将数组A的区间[l1,R1]和区间[l2,R2]合并为一个有序区间{ int temp[maxn],index=0; int i=l1,j=l2; while(i<=r1&...原创 2019-03-14 18:00:27 · 262 阅读 · 0 评论 -
《算法笔记》4.4——区间贪心
题目:给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两之间没有交集例如:(1,3)、(2,4)、(3,5)、(6,7) 最多选3个:(1,3),(3,5)、(6,7)贪心算法思想:1、基础两点:a.优先选择短的区间b.如果存在一个区间包含另一个区间,应选择更小的区间.2、算法(左端点为例)1、对区间左端点进行从大到小排序,左端点相同按右端点从小到大...原创 2019-03-13 17:58:01 · 218 阅读 · 0 评论 -
递归与分治——N皇后问题 / 8皇后问题
题目概述: 在N×N格的国际象棋上摆放N个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。思路:对于此问题,可以将每列皇后的行号列举出来,则问题转化为1~n的一个全排列。代码一(暴力法):#include<stdio.h>#include<stdbool.h>#include<math.h&g...原创 2019-03-10 18:29:22 · 873 阅读 · 0 评论 -
递归与分治——数字全排列(Full Permutation)
题目: 输出1-n个整数的全排列思路: 1、设定数组P存放当前的排列;设定散列数组hashTable,其中hashTable[x]当整数x已经在数组p时为true。2、现在按顺序往p的1-n位中填入数字。不妨假设当前已经填好了p[1]~p[index-1],正准备填p[index]。显然需要枚举1~n,如果当前枚举数字x还没有在p[1]~p[index-1]中(即hashTab...原创 2019-03-10 17:22:12 · 283 阅读 · 0 评论 -
1039 到底买不买 (20 分)
1039到底买不买(20 分)小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1...原创 2019-03-09 16:41:12 · 334 阅读 · 2 评论 -
1033 旧键盘打字 (20 分) (bool类型全真初始化问题)
1033旧键盘打字(20 分)旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母 [a-z,A-Z]、数字0-9、以及下划线_(...原创 2019-03-08 11:17:46 · 152 阅读 · 0 评论