算法
文章平均质量分 58
好啊啊啊啊
这个作者很懒,什么都没留下…
展开
-
string与char数组/数据类型与string的转换
#include<bits/stdc++.h>#include<typeinfo>#define MAX 110using namespace std;long long n,m,a[MAX][MAX];long long dp[MAX][MAX];int main(){ //char数组转string char c1[]="asdf"; string s1(c1);//法一 string s2;//法二 s2=c1; cout<<s1&.原创 2021-11-21 12:51:37 · 691 阅读 · 0 评论 -
快速排序和归并排序 简单模板 C++
记录一下,简单快捷的写法,下次忘了又回来看看。1.快速排序#include <bits/stdc++.h>using namespace std;const int N = 5010;int a[N];void quickSort(int l,int r){ if(l>=r) return ; int t=a[l+r>>1]; int i=l-1,j=r+1; while(i<j) { while(a[++i]<t); w原创 2022-04-23 09:01:30 · 1037 阅读 · 0 评论 -
L2-004 搜索树判断
题目链接:题目详情 - L2-004 搜索树判断 (25 分) (pintia.cn)对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列原创 2022-04-20 23:19:33 · 156 阅读 · 0 评论 -
路径-蓝桥杯
明天比赛了,让我这个临时抱佛脚的选手写个图论题,练练手。1.Dijkstra#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef pair<int,int> PII;const int MAX = 2100;const int INF = 0x3f3f3f3f;vector<PII> V[MAX];int dis[MAX];bool原创 2022-04-08 23:29:21 · 383 阅读 · 2 评论 -
欧几里得算法
1.计算最大公约数:欧几里得算法(辗转相除法)求证:gcd(a,b)=gcd(b,a%b)证明:a=kb+r,即r=a-kb,则:r=a%b#include<bits/stdc++.h>#define x first#define y secondusing namespace std;typedef pair<int,int> PII;const int MAX = 1100;int a,b;int gcd(int a,int b){ retu原创 2022-03-21 11:33:02 · 420 阅读 · 1 评论 -
L2-014 列车调度
题目链接:题目详情 - L2-014 列车调度 (25 分) (pintia.cn)两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N(2≤N≤105),下一行给出从1到N的整数序号...原创 2022-03-19 23:39:24 · 188 阅读 · 0 评论 -
粘木棍&&连续因子
1.粘木棍题目在此:“蓝桥杯”练习系统 (lanqiao.cn)问题描述 有N根木棍,需要将其粘贴成M个长木棍,使得最长的和最短的的差距最小。输入格式 第一行两个整数N,M。 一行N个整数,表示木棍的长度。输出格式 一行一个整数,表示最小的差距样例输入3 210 20 40解题思路:深搜,m个类别,每个木棍可以有m种选择,放或者不放,搜索所有情况,判断条件为每一种类别都有木棍,再求其max和min值,求差值与ans比较,反正这样写很简单,优化还没有考虑原创 2022-03-16 23:06:51 · 85 阅读 · 0 评论 -
SPFA、迪杰斯特拉、弗洛伊德算法C++实现
三者不同,就我个人理解而言,迪杰斯特拉是求单源点最短路径且权值为非负,算法效率为:;弗洛伊德算法是求任意两点间的最短路径,算法复杂度高,为;SPFA为单源点最短路径,权值可为负数,时间复杂度为;三者均可以处理有向和无向图。1.SPFA#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;struct node{ int v,weight;};vector<node> V[M原创 2022-03-16 22:15:43 · 1329 阅读 · 0 评论 -
第十届蓝桥杯省赛B组题解记录
1.组队思路:从每个位置可以选取的人选入手,每个人选不可重复,组合求最大。方法一:深搜dfs#include<bits/stdc++.h>using namespace std;int team[20][6],maxs=0,vis[20];void dfs(int sum,int n) //sum为出场运动员的分数求和 n为目前要选择的号位 { if(n==6) { if(sum>maxs) maxs=sum; return ; } for(i原创 2022-02-27 12:42:14 · 495 阅读 · 0 评论 -
栈和队列例题
一、连续区域矩形面积(栈)题目概述Sample Input31 23 41 233 41 23 4-1Sample Output1214题目大意:给出一系列矩形的宽度和高度,矩形沿着x轴对齐,求这些矩形组成的连续矩形区域的最大面积。解题方法:这是一道非常好的题,用栈保存矩形,如果高度递增则不断入栈,如果遇到当前输入的比栈顶高度小,则从栈顶开始不断出栈并且计算最大面积,直到栈顶高度小于当前输入高度则停止出栈,并把开始出栈矩形的宽度累加得到totalw,把totalw原创 2022-02-26 17:13:36 · 203 阅读 · 0 评论 -
排列组合问题(一)
交换法全排列#include<bits/stdc++.h>#define MAX 100using namespace std;int n,a[MAX];void permutation(int pos){ if(pos==n) { for(int i=0;i<n;i++) cout<<a[i]; cout<<endl; return ; } for(int i=pos;i<n;i++)//每次以pos为基准 i与.原创 2021-11-19 21:18:57 · 132 阅读 · 0 评论 -
迷宫的最短路径
迷宫的最短路径 给定一个大小为N×M的迷宫。迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四个的通道移动。请求出从起点到终点所需的最小步数。请注意,本题假定从起点一定可以移动到终点。(N,M≤100)('#', '.' , 'S', 'G'分别表示墙壁、通道、起点和终点)输入:10 10#S######.#......#..#.#.##.##.#.#........##.##.####....#....#.#######.#....#......####.###....原创 2021-11-19 17:05:34 · 498 阅读 · 0 评论 -
1040 有几个PAT
字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第 2 位(P),第 4 位(A),第 6 位(T);第二个PAT是第 3 位(P),第 4 位(A),第 6 位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。题目链接思路分析:有两种比较简...原创 2021-10-07 16:51:40 · 96 阅读 · 0 评论 -
1035 插入与归并
1035 插入与归并 (25 分)根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入格式:输入在第一行给出正整数 N (.原创 2021-10-06 22:05:18 · 71 阅读 · 0 评论 -
1034 有理数四则运算
本题要求编写程序,计算 2 个有理数的和、差、积、商。输入格式:输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。输出格式:分别在 4 行中按照有理数1 运算符 有理数2 = 结果的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式k a/b,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为 0,则输出Inf。题...原创 2021-10-06 18:06:31 · 71 阅读 · 0 评论 -
1028 人口普查
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。题目链接题目分析:我的菜鸡代码1:每次输入判断是否出生日期是否合法,用一个结构体数组存合法的数据,在进行排序,数组头最年轻,数组尾最年迈参考大佬后的优化代码:直接用一个maxvalid和minval..原创 2021-10-05 19:47:06 · 66 阅读 · 0 评论 -
1027 打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。题目链接题目分析:1、首先找到给定目标数字后能达到的最大沙漏(计算行数,即row)2、 根据row两个大的for.原创 2021-10-05 15:33:07 · 136 阅读 · 0 评论 -
1024 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。题目链接https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168...原创 2021-10-03 22:14:29 · 192 阅读 · 0 评论 -
2021年团体程序设计天梯赛-总决赛
做了一下21年的天梯赛,和大家分享一下我在网上剽窃的各路大神思路L1-6 吉老师的回归题目链接思路:用字符串读取再用find函数会很简单#include<bits/stdc++.h>using namespace std;#define MAX 10000int main(){ int n,m,cnt=0,f=0; cin>>n>>m; getchar(); for(int i=0;i<n;i++) { string s原创 2021-09-26 22:52:28 · 826 阅读 · 0 评论 -
分支限界法及其拓展 educoder
#include <bits/stdc++.h>using namespace std;struct Object{ int weight;//重量 int price;//价值 float d;//单位重量价值 };struct MaxHeapQNode{ MaxHeapQNode *parent;//父结点,可以记录下路径 int lchild;//左子结点 int upprofit;//bound的值 表征优先级 .原创 2021-06-23 20:54:56 · 534 阅读 · 5 评论 -
回溯法拓展2 educoder
第1关:非递归实现皇后问题任务描述本关任务:在n×n格的棋盘上放置彼此不受攻击的 n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。用非递归算法解决该问题。...原创 2021-06-18 19:29:10 · 1797 阅读 · 5 评论 -
回溯法educoder
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。用回溯算法解决问题的一般步骤:1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。2 、确定易于搜索的解空间结构,使得能用回溯法方便地搜索整个解空间 。3 、以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结原创 2021-06-06 10:50:49 · 1334 阅读 · 4 评论 -
educoder贪心算法
educoder贪心算法贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择利用贪心法求解的问题应具备如下2个特征1、贪心选择性质一个问题的整体最优解可通过一系列局部的最优解的选择达到,并且每次的选择可以依赖以前作出的选择,但不依赖于后面要作出的选择。这就是贪心选择性质。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的...原创 2021-05-15 16:12:22 · 997 阅读 · 8 评论