![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法刷题
无月可归
一只富有文艺气息的程序猿
展开
-
滑动窗口相关题目
leetcode3.无重复字符的最长子串题目连接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters时间复杂度:O(N)空间复杂度:O(N)题解:int lengthOfLongestSubstring(string s) { if(s.size()==0) return 0; unordered_set<char> lookup;原创 2020-12-10 22:16:30 · 244 阅读 · 0 评论 -
BFS模板及其应用
BFS模板void BFS(int s){ queue<int> q; q.push(s); while(!q.empty()){ //取出队首元素top //访问队首元素top //将队首元素入队 //将top的下一层结点中未曾入队的结点全部入队,并设置为已入队 }}B...原创 2019-01-23 16:37:11 · 173 阅读 · 0 评论 -
数塔问题求解--动态规划
题目描述如下图,找寻从第一个结点5到最后一层结点的最长路径(即结点数和最大),图片是自己用画图画的,凑合看吧。解题思路典型的动态规划问题,也可以用递归来算,但是会炒鸡慢,这里直接用动态规划来求解。#include<iostream>#include<string.h> using namespace std;const int MAXLENGT...原创 2019-01-23 16:52:47 · 807 阅读 · 0 评论 -
北邮oj--文件系统
题不算难,但会出一些莫名其妙的错误,可能还是不扎实吧。对于string和char*的转换:char*—>string:char buf[1000];string s(buf);string—>char*:s.c_str();#include<stdio.h>#include<bits/stdc++.h>using namespace std;...原创 2019-02-02 17:34:22 · 1301 阅读 · 0 评论 -
北邮oj--Single Number
这道题让我明白了:刷oj不能用cin和cout,要用scanf和printf,同样的程序换成io流就会超时#include<stdio.h>#include<map>using namespace std;int main(){ int N; while(scanf("%d",&N)!=EOF){ map<long long,int>...原创 2019-02-02 17:36:24 · 781 阅读 · 6 评论 -
北邮oj--字符串转换
贪心算法的小应用#include<stdio.h>#include<bits/stdc++.h> #include<stdlib.h>#include<cmath>using namespace std;int cToc(char c1,char c2){ return min(abs(c2-c1),26-abs(c2-c1));...原创 2019-02-02 17:39:37 · 241 阅读 · 0 评论 -
北邮oj--统计节点个数
1.根节点不一定首先输入2.用不着使用链表建立好树,用数组表示出来解决题就好#include<stdio.h>#include<bits/stdc++.h>using namespace std;struct TreeNode{ int du; int f; vector<int> s; TreeNode(){ f=-1; du=...原创 2019-02-07 11:31:34 · 459 阅读 · 0 评论 -
c++memset的使用
memset()memset()函数原型是extern void *memset(void *buffer, int c, int count),其中buffer为指针或是数组 ,c是赋给buffer的值,count是buffer的长度.。头文件 string.h举例:int d[10000];memset(d,0,sizeof(d)); //给...原创 2019-02-07 11:32:26 · 3396 阅读 · 0 评论 -
北邮oj---最小距离查询
题目:http://10.105.242.80/problem/p/94/直接左一个右一个查询会超时,这里用了一个map存储,采用空间换时间的策略,ac#include<stdio.h>#include<bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); wh...原创 2019-02-08 09:23:20 · 364 阅读 · 0 评论 -
北邮oj--矩阵幂
http://10.105.242.80/problem/p/96/二刷此题依然小心翼翼,赋值,存储,相乘。。。简单题要注重细节和速度#include<stdio.h>#include<bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); while(T--){...原创 2019-02-08 10:22:57 · 176 阅读 · 0 评论 -
北邮oj---二叉树的层数
题目:http://10.105.242.80/problem/p/100/树形结构问题,运用数组来存储树,bfs。#include<stdio.h>#include<bits/stdc++.h>using namespace std;struct TreeNode{ int num; vector<int> son;};int mai...原创 2019-02-09 16:23:34 · 346 阅读 · 0 评论 -
北邮oj---ip地址
题目:http://10.105.242.80/problem/p/101/积累知识:sscanf(s.c_str(),"%d",&count); //string转intvoid split(string s,char c,vector<string> &vs){ ...原创 2019-02-10 10:59:55 · 6569 阅读 · 1 评论 -
北邮oj---反转单词
题目:http://10.105.242.80/problem/p/103/字符串的简单操作,运用一个栈即可解决问题#include<stdio.h>#include<bits/stdc++.h>using namespace std;int main(){ char buf[100]; stack<string> sta; while(s...原创 2019-02-10 11:47:26 · 316 阅读 · 0 评论 -
multimap和map的实例
multimap的基本操作实例#include<iostream>#include<map>using namespace std;int main(){ typedef multimap<int,double,less<int> > mmid; mmid pairs; cout<<"1)"<<pairs.c...原创 2019-01-23 16:05:47 · 295 阅读 · 0 评论 -
c++下大数处理---高精度加减乘模板
借鉴了算法笔记和网友的代码,得到一份我的终极模板,贴出来,现成的轮子,欢迎大家copy。#include<iostream>#include<string.h> using namespace std;struct bign{ int d[1000]; int len; bign(){ memset(d,0,sizeof(d)); len=0; ...原创 2019-01-16 22:29:42 · 228 阅读 · 0 评论 -
算法练习---整数拆分
题目描述一个整数总可以拆分为2的幂的和,例如: 7=1+2+4 7=1+2+2+2 7=1+1+1+4 7=1+1+1+2+2 7=1+1+1+1+1+2 7=1+1+1+1+1+1+1 总共有六种不同的拆分方式。 再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。 用f(n)表示n的不同拆分的种数,例如f(7)=6. 要求编写程序,读入...原创 2019-01-15 19:54:10 · 2386 阅读 · 0 评论 -
北邮机试题目---c翻转
题目描述首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。 操作类型有四种: 1 2 表示:90度,顺时针,翻转4个数 1 3 表示:90度,顺时针,翻转9个数 2 2 表示:90度,逆时针,翻转4个数 2 3 表示:90度,逆时针,翻转9个数输入描述:输入有多组数据。每组输入一个5 ...原创 2019-01-02 16:07:23 · 349 阅读 · 0 评论 -
北邮机试题目---打牌
题目描述牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。 规则:出牌牌型有5种 [1]一张 如4 则5...9可压过 [2]两张 如44 则55,66,77,...,99可压过 [3]三张 如444 规则如[2] [4]四张 如4444 规则如[2] [5]五张 牌型只有12345 23456 34567 45678 56789五个,后面的比前面...原创 2019-01-02 16:25:34 · 681 阅读 · 0 评论 -
c++stl学习----vector
vector是stl中很常用的容器,其实质是动态数组,可随机访问,在尾部插入删除一般时间复杂度为o(1),在头部或中间时间复杂度一般为o(n),这里话不多说,直接贴上常用的代码。#include<iostream>#include<vector>using namespace std;int main(){ int a[5]={1,2,3,4,5}; //v...原创 2019-01-03 21:57:14 · 135 阅读 · 0 评论 -
求第k小数----直接使用priority_queue
之前写过一个博客求第k小数,很zz的使用冒泡排序和快排来解此题,哎,权当复习排序好了,看了大佬的代码,原来stl下直接就有封装好的容器priority_queue,直接使用就好了,这个的效率绝对要比我们写的排序算法要高,大家要以我为戒,不要重复发明轮子,也因此坚定了我学习stl的信念,真的是程序猿必学的啊,这里贴出简介的代码。#include<iostream>#include...原创 2019-01-03 22:12:08 · 581 阅读 · 0 评论 -
c++下string转int
一个非常好用的方法,使用stringstream,个人理解:可以把stringstream理解为一个容器,输入进去一种类型,可以以另一种类型形式输出,例如下代码就实现了string到int的转换,注意复用时要clear一下,另外要包含头文件<sstream>#include<iostream>#include<sstream>using namespa...原创 2019-01-05 19:20:53 · 9234 阅读 · 0 评论 -
北邮机试----复数集合
题目描述 一个复数(x+iy)集合,两种操作作用在该集合上: 1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE; 2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE; 最开始要读入一个int n,表...原创 2019-01-05 19:54:41 · 297 阅读 · 0 评论 -
北邮机试---二叉排序树
题目描述输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。输入描述:输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出描述:可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。示例1输入51 6 5...原创 2019-01-05 20:05:08 · 382 阅读 · 0 评论 -
STL排序算法sort
一、用sort对基本类型的数组从小到大或从大到小排序sort(数组名+n1,数组名+n2);注意排序区间是[n1,n2),左闭右开。默认为从小到大排序,如果想要从大到小排序,需要加参数sort(数组名+n1,数组名+n2,greater<int>());#include<iostream>#include<algorithm>using na...原创 2019-01-07 10:47:14 · 1210 阅读 · 1 评论 -
c++stl---multiset和set
multiset和set同为关联容器,即容器内部元素为有序的,不同于vector等顺序容器中元素按插入顺序排列,两者的不同之处为multiset中可以包含相同元素,而set中不可以包含相同元素,下面列出对两个容器的一些基本操作。multiset的一些基本操作。#include<iostream>#include<set>using namespace std;...原创 2019-01-11 11:29:18 · 174 阅读 · 0 评论 -
机试题目---约数的个数
题目描述输入n个整数,依次输出每个数的约数的个数输入描述:输入的第一行为N,即数组的个数(N<=1000)接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)当N=0时输入结束。输出描述:可能有多组输入数据,对于每组输入数据,输出N行,其中每一行对应上面的一个数的约数的个数。示例:输入51 3 4 6 1...原创 2019-01-12 10:57:05 · 643 阅读 · 0 评论 -
机试题目---质因数的个数
题目描述求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。输入描述:可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。输出描述:对于每组数据,输出N的质因数的个数。示例:输入120输出5解题思路求解质因数,画龙点睛的一点就是运用好sqrt(n)...原创 2019-01-12 16:44:50 · 377 阅读 · 0 评论 -
动态规划---背包问题详解
概述背包问题是动态规划的典型问题,掌握好对我们以后求解各类问题都能提供很好的思路,下面我将分类对各种背包问题进行详解,哪里不清楚或有错误欢迎评论留言,期待和大家共同进步。1. 0-1背包问题1.1问题描述:有N件物品和一个容量为V的背包,放入第i件物品耗费的费用是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。1.2基本思路解决背包问题最核心的点是要有一种动...原创 2019-01-14 13:58:24 · 1312 阅读 · 0 评论 -
北邮oj---寻找宝藏
题目:http://10.105.242.80/problem/p/105/树形结构问题,算是比较简单的了#include<stdio.h>#include<bits/stdc++.h>using namespace std;struct TreeNode{ vector<int> son; int f;};int main(){ in...原创 2019-02-11 10:26:54 · 760 阅读 · 0 评论 -
北邮oj---最远距离
题目:http://10.105.242.80/problem/p/102/把所有能转出的角度都枚举出来,然后找最接近180度的。另外计算浮点数一定要注意精读,把int型转为double型再计算!!!我找了一下午发现是因为这个没有AC!#include<stdio.h>#include<bits/stdc++.h>#define Pi acos(-1.0)...原创 2019-02-11 18:46:11 · 563 阅读 · 0 评论 -
2016北邮计算机机试
目录A.三元组题目描述输入输出思路代码B.寻找变化前01序列题目描述输入输出思路代码C.寻找i*j=m的个数题目描述输入输出思路代码D.字符串处理题目描述输入输出思路代码注:题目来自互联网,代码自己写的一些数据测试通过,但没有oj来评测,不敢保证完全正确,可以给大家一个解题思路。另外如有错误,欢迎评...原创 2019-02-26 11:37:35 · 350 阅读 · 1 评论 -
洛谷P1002 过河卒--优化递归与动态规划的AC解法
题目链接:https://www.luogu.org/problemnew/shouw/Pi1002思路由于卒子只能向两个方向走,所以卒子到达一个点的方法数等于到达这个点左1的方法数+到达这个点上1的方法数,即状态转移方程为dp[i][j]={dp[i-1][j]+dp[i][j-1]},明白了这个,我们可以用递归和非递归(也就是动态规划)来解题1.优化递归解法这是我非常倡导的一种...原创 2019-02-27 11:28:39 · 1148 阅读 · 0 评论 -
洛谷P1004 方格取数+P1006传纸条---四维数组动态规划
P1004方格取数题目链接:https://www.luogu.org/problemnew/show/P1004思路第一次做四维的动态规划问题,可以当作模板题来做吧,思路就是把用dp[i][j][k][l]来表示第一个人(i,j),第二个人(k,l)时的最优解,可以看作是两个人同时出发,单独考虑i==k && j==l的情况即可。代码#include<...原创 2019-02-27 15:29:47 · 301 阅读 · 0 评论 -
北邮oj---汇编-计算机二2014
思路这道题我开始写了乱七八糟将近200行的代码,思路混乱不说,没有AC而且错误极其难找,后来参考了大神的代码才明白自己真的是将简单问题复杂化了。管他什么高位低位,只用一个数组表示寄存器存的数就行了,高位低位通过取余操作就行了,无论二进制十六进制统统转换为十进制存至数组中。代码#include<cstdio>#include<bits/stdc++.h>...原创 2019-02-28 17:26:28 · 596 阅读 · 0 评论 -
树状数组模板
洛谷【模板】P3374树状数组1题目链接:https://www.luogu.org/problemnew/show/P3374AC代码#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>...转载 2019-03-01 16:39:40 · 96 阅读 · 0 评论 -
北邮2017年计算机机试
ProblemA 求special数题目描述(非完整版)代码#include<cstdio>#include<bits/stdc++.h>using namespace std;int main(){ int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); ...原创 2019-03-01 16:58:26 · 1212 阅读 · 6 评论 -
2013年12月CCF软考试题
A.出现次数最多的数题目链接:http://118.190.20.162/view.page?gpid=T5水题,直接使用一个map即可。#include<cstdio>#include<map>using namespace std;int main(){ int n; scanf("%d",&n); map<int,int>...原创 2019-03-03 10:12:41 · 201 阅读 · 0 评论 -
2014年3月CCF软考试题
A.相反数题目链接:http://118.190.20.162/view.page?gpid=T10水题,但是我第一次提交竟然是0分惊了,这要是考试现场不就gg了吗,简单题还是要细心!#include<cstdio>#include<bits/stdc++.h>using namespace std;int main(){ int N; scanf(...原创 2019-03-05 10:55:24 · 218 阅读 · 0 评论 -
2014年9月CCF软考试题
A.相邻数对题目链接:http://118.190.20.162/view.page?gpid=T16水题,,,#include<cstdio>#include<bits/stdc++.h>using namespace std;int main(){ int n; scanf("%d",&n); vector<int> vt;...原创 2019-03-05 11:07:11 · 186 阅读 · 0 评论 -
2014年12月CCF软考试题
A.门禁系统题目链接:http://118.190.20.162/view.page?gpid=T21水题,使用一个map秒解。#include<cstdio>#include<bits/stdc++.h>using namespace std;int main(){ int n; scanf("%d",&n); map<int,in...原创 2019-03-07 10:48:37 · 183 阅读 · 0 评论