![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
八股文编程
这里主要收录了ACM题解,leetcode题解,以及我做过的各种各样的OJ上的题解
麻达拉
お前も舞うか
展开
-
leetcode刷题:环状替换法 数组翻转
189. 旋转数组class Solution {public: void rotate(vector<int>& nums, int k) { int n = nums.size(); k = k % n; int count = gcd(k, n); for (int start = 0; start < count; ++start) { int current原创 2021-01-08 22:30:30 · 189 阅读 · 0 评论 -
至暗时刻
至暗时刻至暗时刻至暗时刻至暗时刻原创 2020-12-27 16:24:30 · 109 阅读 · 0 评论 -
用栈中序、先序、后序遍历二叉树
用栈中序遍历二叉树核心思路(算法流程):对每一个点:先将它自己以及它的的左子树上的根节点入栈(因为是用链表实现的的父节点与子节点的连接,遍历只能从父节点到子节点,所以入栈后就逆序了,栈顶的点就是要加入到res中的点)。将一个点的val加入到res中后,这个点就只剩下右子树上的点没有加入到res了,所以就有root=root->right,开始遍历这个点的右子树。循环退出的条件是:!stack.empty() || root!=nullptr。代码:class Solution {pu原创 2020-11-09 16:22:03 · 631 阅读 · 0 评论 -
为什么一个数各位数字相加为3的倍数,它就能被3整除?
先看两位数字的,如数码ab组合 a+b为3的倍数 那么10*a+b=9a+(a+b) 9a能被3整除,a+b能被3整除,所以10+b能被3整除 再看三位数字的,如数码abc组合 a+b+c为3的倍数 那么100*a+10*b+c=99a+9b+(a+b+c) 99a,9b,(a+b+c)都能被...9也有这样的性质。...转载 2020-11-08 21:14:08 · 2767 阅读 · 0 评论 -
归并排序
前几回,在前面已经对冒泡排序、直接插入排序、希尔排序、选择排序、快速排序做了说明分析。这回,将对归并排序进行相关说明分析。一、排序算法系列目录说明冒泡排序(Bubble Sort) 插入排序(Insertion Sort) 希尔排序(Shell Sort) 选择排序(Selection Sort) 快速排序(Quick Sort) 归并排序(Merge Sort) 堆排序(Heap Sort) 计数排序(Counting Sort) 桶排序(Bucket Sort) 基数排序(Ra转载 2020-11-07 08:15:35 · 133 阅读 · 0 评论 -
P1664
分析:(1)首先我们知道,当只有一个苹果,或者没有苹果,或只有一个盘子时,只有一种方法。(2)当盘子的数量比苹果的多时(m > n), 那么就算是所有的盘子都放一个苹果,还是会有空的盘子。这种情况等价于把 n 个苹果放入 n 个盘子。(3)当盘子的数量<=苹果的数量时(m <= n), 分两种情况考虑 <1>每个盘子都有,那么每...转载 2019-08-26 16:13:24 · 229 阅读 · 0 评论 -
1618: 【动态规划】拦截导弹
题目描述张琪曼:“老师,修罗场是什么?”墨老师:“修罗是佛家用语,修罗毕生以战斗为目标,修罗场指的是他们之间的死斗坑,人们通常用‘修罗场’来形容惨烈的战场。后来又引申出‘一个人在困境中做绝死奋斗’的意思。所以,这其实也在暗示我们,即使是身处绝境,也不要放弃奋斗。再说了,情况其实没有这么糟糕,因为我们最新的导弹拦截系统已经研制好了。”魔法世界为了防御修罗王军团的导弹袭击,开发出一种导弹拦截系...原创 2019-08-08 16:25:48 · 145 阅读 · 0 评论 -
百练2945(拦截导弹)
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=1001;int dp[maxn],a[maxn];int main(){ int n; cin>>n; for(int i=1;i&l...原创 2019-08-08 16:06:52 · 133 阅读 · 0 评论 -
问题 B: 【动态规划】抄近路
时间限制:1 Sec内存限制:64 MB提交:102解决:65[提交] [状态] [命题人:admin]题目描述“最近不知道怎么回事,感觉我们这个城市变成了一个神奇的地方,有时在路上走着走着人就消失了!走着走着突然又有人出现了!你以为这是《寂静岭》,《生化危机》,《行尸走肉》拍摄地?……哎,先不说了,这该死的雾霾又让我们迷路了。”李旭琳发愁地说。张琪曼和李旭琳每天要...原创 2019-08-07 15:26:56 · 247 阅读 · 0 评论 -
upc 训练赛 第九场 问题 G: 似魔鬼的步伐(思维题)
[提交] [状态] [命题人:admin]题目描述一步两步一步两步,一步一步似爪牙。似魔鬼的步伐。摩擦摩擦,在这光滑的地上摩擦摩擦,似魔鬼的步伐。似魔鬼的步伐。庞麦郎喜欢在光滑的地板上摩擦。假设他拥有N格体力。初始摩擦值为0,每次可以选择可以摩擦或者行走。摩擦消耗两格体力,第n次的摩擦值=第n-1次的摩擦值2+2。行走消耗一格体力,第n次的摩擦值=第n-1次的摩擦值1+1。求最大的摩擦值为多少...原创 2019-07-02 14:37:54 · 475 阅读 · 0 评论 -
1017 A除以B (20 分)
党课考试怎么办呀?#include<iostream>#include<cstring>#include<string>using namespace std;int main(){ string s; int b,q...原创 2019-11-15 20:05:51 · 104 阅读 · 0 评论 -
1012 数字分类 (20 分)
#include<bits/stdc++.h>using namespace std;int main(){ //flag2的作用就是判断a2是否存在。a2有可能小于0 int a1=0,a2=0,flag2=0,a3=0,a5=0; double a4=0.0; int n,num,k=1,cnt4=0; cin>>n; ...原创 2019-07-13 18:21:48 · 70 阅读 · 0 评论 -
1008 数组元素循环右移问题 (20 分)
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N...原创 2019-07-06 19:21:26 · 100 阅读 · 0 评论 -
1004 成绩排名 (20 分)
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 … …… 第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 10...原创 2019-06-22 21:30:20 · 89 阅读 · 0 评论 -
1002 写出这个数 (20 分)
1002 写出这个数 (20 分)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。 输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。 输入样例:12345678909876543211234567...原创 2019-06-21 21:29:52 · 106 阅读 · 0 评论 -
BFS(广搜,啊哈算法,模板)
啊哈算法版:#include<iostream>#include<algorithm>#include<stack>#include<set>#include<queue>#include<map>#include<string>#include<cstring>#include...原创 2019-09-26 18:34:57 · 338 阅读 · 0 评论 -
啊哈算法,深搜,源代码
#include<bits/stdc++.h>using namespace std;int a[10],book[10],n;void dfs(int step){ int i; if(step==n+1) { for(int i=1;i<=n;i++) cout<<a[i]; cout<&l...原创 2019-08-22 15:28:45 · 297 阅读 · 0 评论 -
《啊哈!算法》之 迪杰斯特雷算法,源代码
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define INF 1<<31-1const int maxn=101;int e[maxn][maxn],dis[maxn],book[maxn];int main(){ ...原创 2019-08-13 13:50:25 · 210 阅读 · 0 评论 -
《啊哈!算法》克鲁斯卡尔算法源代码(Kruskal)
算法思想:首先按照边的权值进行由小到大的排序,每次从剩余的边中选择权值较小且边的两个顶点不在同一个集合内的边(就是不会产生回路的边),加入到生成树中,直到加入了n-1条边为止。#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef stru...原创 2019-08-12 13:45:51 · 524 阅读 · 0 评论 -
《啊哈!算法》并查集源代码
#include<cstdio>#include<iostream>using namespace std;int f[1001]={0},n,m,sum=0;void init();int getf(int v);void merge2(int v,int u);int main(){ int i,x,y; scanf("%d %d",&...原创 2019-08-09 15:19:12 · 362 阅读 · 0 评论 -
关于深度搜索实质的一点看法
深度搜索是使用递归实现的,我们又知道,递归是因为早期一些编程语言没有循环语句才被创造出来的,目的就是能实现循环的功能。所以,递归与循环(for语句)类似,或者说,递归本质上也可以理解为循环。所以,深度搜索也可以靠循环来实现。比如说《啊哈算法》里,讲解枚举这种思想的时候,举的三个数的全排列的例子,这个三个数全排列的例子就是用的三重for循环语句来实现的。后来,在《啊哈算法》,又用深度搜索来讲解了输...原创 2019-07-16 11:18:02 · 134 阅读 · 0 评论 -
关于啊哈算法,快速排序,为什么一定要先从右边往左找
首先,根据啊哈算法里的代码,当两个下标相遇的时候(设此时数组下标位置为K),最左边的基准数会与位置为K的数交换位置。其次,当最右边的哨兵j停下时,标志着j当前位置对应的数字小于基准数。当最左边的哨兵i停下时,标志着i当前位置对应的数字大于基准数。也就是说,在两个哨兵相遇的那一次循环里,如果先让i停下(此时这个位置就是K了),那这个位置上的数字就是大于基准数的。然后,位置K上的数字与基准数交换的话...原创 2020-04-08 16:08:38 · 240 阅读 · 0 评论 -
【贪心】 时空定位(简单题)
问题 G: 【贪心】时空定位I时间限制:1 Sec内存限制:64 MB提交:56解决:47[提交] [状态] [命题人:admin]题目描述张琪曼已经确定了李旭琳在一个长为20千米,宽为2千米的空间,她要在横中心线上放置半径为Ri的定位装置,每个定位装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的物体被定位,这有充足的定位装置i(1<...原创 2019-08-30 10:13:00 · 303 阅读 · 0 评论 -
【分治】魔法石的诱惑
今天上英语课没好好听讲,专业英语的老师很牛,原专业是机械,然后自学英语和计算机。现在和外国人交流无压力,而且计算机的专业课也都很懂。我什么时候才能成为大佬呢? 烟大终于成为了“淹大”问题 C: 【分治】魔法石的诱惑时间限制:1 Sec内存限制:128 MB提...原创 2019-09-04 16:36:18 · 203 阅读 · 0 评论 -
POJ 2503
好久没写解题报告了因为做的题太水没学到什么,今天终于学到了新的知识,用快排加二分查找解决庞大的查找任务,对与新手来说刚开始接触这题应该没想到用二分查找的,我自己也是,直接写了一个简单的查找程序让他输出对应的english但是一放上去就超时了,后来要百度看别人的代码想想才知道原来这题考的就是要高效的查找,用普通查找办法也有一样的输出结果不过就是超时咯,不但学会了二分,还学了几个很有用的函数sscan...转载 2019-09-02 14:53:40 · 305 阅读 · 0 评论 -
PAT A 1003(写错了,dijkstra就错了,然而没找到错误)
#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n,m,mmp[501][501];int dis[501],w[501],num[501],node[501],c1,c2;bool book[501]={true};const int i...原创 2019-11-23 11:01:17 · 192 阅读 · 0 评论 -
PAT_A 1060
真让人秃顶这个题情况太复杂,有两个数据没通过,实在不想debug了。错的原因,包括不限于下面这种情况(如图),本来应该是输出YES的。#include<iostream>#include<string>using namespace std;...原创 2019-09-09 18:43:46 · 75 阅读 · 0 评论 -
hdu--oj---2007------平方和与立方和
Problem Description给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。Input输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。Output对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。你可以认为32位整数足以保存结果。Sample Input1 32 5...原创 2019-04-28 14:13:47 · 95 阅读 · 0 评论 -
YTU oj2413
折半查找法,元素第一次出现的位置。2413: C语言习题 折半查找时间限制:1 Sec内存限制:128 MB提交:12181解决:854[提交][状态][讨论版][命题人:lyh]题目描述有n个数(n<=1000000),这n个数已按从大到小顺序存放在一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数在数组中第一次出现的位置。如果不...原创 2019-09-18 18:46:45 · 621 阅读 · 1 评论 -
母牛的故事,题解,递推版
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?Input输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。Output对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。Sa...原创 2019-08-26 18:47:50 · 345 阅读 · 0 评论 -
算法--递归--走台阶问题(2种递归+递归改循环)
递归:一个问题可以分解成若干子问题,且求解思路一样,当到一定的情况下有终止条件,这样的问题可以用递归方法求解注意事项:递归调用深度太大,栈空间会耗尽溢出注意避免调用中某些值的重复计算(见以下代码3)递归,频繁调用函数,时间成本高(见以下代码1)递归代码可以改成循环代码 (见以下代码2)问题1给你 n 个台阶,你的最大步幅是2步,可以一次走1步,也可以一次走2步,问有多少种走法?...转载 2019-07-16 11:18:33 · 188 阅读 · 0 评论 -
1067: 顺序排号(YTUoj)(约瑟夫环问题)
题目描述有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。输入初始人数n输出最后一人的初始编号代码:int main(){ int n; scanf("%d",&n); int a[n],i,book=0,cnt=n;//cnt为剩下的人数。 for(i=0;i<n;i...原创 2019-05-21 09:17:51 · 261 阅读 · 0 评论 -
YTUOJ之创建链表(递归)
struct node *creatList_1(int len){if(len>0){struct node *p;int n;scanf("%d",&n);p=(struct node *)malloc(sizeof(struct node));p->num=n;p->next=creatList_1(len-1);return p;}else...原创 2019-05-14 19:15:54 · 117 阅读 · 0 评论 -
YTU oj3386
根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。#include<stdio.h>void insert_hash(int arr[],int tmp,int lenth){ int i=tmp%lenth; while(arr[...原创 2019-04-27 09:35:07 · 227 阅读 · 0 评论 -
oj3387
有一个数据字典,里面存有n个不同数字(n<=100000),以哈希函数为f(x)=x+1存在数据字典中。小明现在接到一个任务,这项任务看起来非常简单——给定m个数字,分别查询这m个数字是否出现在字典之中;但是考虑到你是个优秀的程序员,如果查询的数存在表中你不仅要告诉小明数据存在还得贴心的告诉小明他查询的数的在数据字典中的下标(下标从2开始到n+1)。若查询的数不存在,则返回-1;#incl...原创 2019-04-27 09:35:24 · 218 阅读 · 0 评论 -
UPC1020
密码破译中国石油大学ACM俱乐部小武学长的字符串处理功力在ACM界无人不知无人不晓。今天,高老板从小武学长那借到了一本秘籍。高老板非常兴奋,打开书的第一章,页首写着26个字母“IUJTMFHXOKBQEAPZCDWRYNVSGL”,对应的英文字母是“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,此书根据此字母表编写,需要翻译后查看。高老板为了练就小武学长的神功,请你为他写一...原创 2019-09-06 15:01:30 · 261 阅读 · 6 评论 -
POJ1650
#include<bits/stdc++.h>using namespace std;int main(){ double a; int s,m; int son,mother,L; double son_now; cin>>a>>L; double cmp=L;//我们先将公差设置的大一点,当然,这也是公...原创 2019-09-04 19:21:30 · 153 阅读 · 0 评论 -
Hailstone HOTPO
埋伏他一手#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct node{ int id; int num; int...原创 2019-09-03 15:14:13 · 118 阅读 · 0 评论 -
火柴棍等式 P1149
今天去了三教,感觉回到了高三。考研,恐怖如斯!!!当年 tourist,他能在 World Final 上,4 小时 AK,我今天 再做俩题,不是问题。这个题,我之前一直有一点想错了:因为题目里说,i ! = j 的情况可以算两次,所以我以为 i = = j的情况就只能算一次。所以,在判断等式成立条件的时候,我就把 i==j这种情况专门设置...原创 2019-09-04 20:59:39 · 129 阅读 · 0 评论 -
哈夫曼树(不太详细的讲解,以后会更新的)
关于建树的关键点,都在下面代码的注释里了。#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int inf=0x3f3f3f3f;typedef...原创 2019-12-20 13:41:46 · 177 阅读 · 0 评论