![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++算法题解分析
一些自己刷过的题目,算法,写的思路,可以参考一下
云边有把小AK
人工智能大四
展开
-
股票买卖 II (贪心算法)
先将每天的股票价格与前一天的价格相减,得出就是相较于上一天,第i天是涨还是跌然后对于这个差值进行排序,从大到小排序,只需要那些差值大于0的相加即可得出最大利润。《元日》 宋·王安石爆竹声中一岁除,春风送暖入屠苏。千门万户曈曈日,总把新桃换旧符。原创 2022-01-01 21:52:44 · 851 阅读 · 0 评论 -
九宫幻方-第八届蓝桥省赛-C组(DFS和对比所有幻方种类)
思路:所有行,列,对角线的和相等,其实就是行,列,对角线和均为(1~9)/3=15用dfs填充所有为0 的数,并判断是否符合要求,如果符合要求count+1,最后判断count的值即可,注意:dfs填充完需要进行减枝,进行遍历下一种情况。原创 2022-01-08 17:10:00 · 710 阅读 · 0 评论 -
乘积最大(第九届蓝桥杯省赛C++B组)
思路:先对n个数从小到大排序,越往左负数的绝对值越大,越往右,正数的绝对值越大,如果k==n的话就全部都选,直接遍历相乘,如果k<n,k是偶数,答案必然是大于0 的数,每次选出左边两个数相乘,右边两个数相乘,然后比较乘之后的大小。如果k是奇数,先把最大的数选出,然后k--,把奇数情况转化为偶数情况原创 2022-01-07 20:19:46 · 1555 阅读 · 7 评论 -
7-10 最长对称子串 (25 分)(暴力题解)C语言
思路:字符串末尾j=strlen(s)-1往前找到与前面i=0相同字符,然后判断前面字符和该匹配的字符区间j-i+1内的字符是否满足回文,若满足,则更换max值为这个区间值j-i+1。若不满足则j往前找,找完一边后,i++继续执行前面操作原创 2022-01-03 14:15:38 · 538 阅读 · 2 评论 -
雷达设备(贪心)
思路:需要最少雷达覆盖所有的点,雷达扫描的面积是d为半径的圆的面积,我们试图把这个二位空间转化为一维空间,也就是该点能被雷达覆盖的区间范围原创 2022-01-02 11:51:14 · 780 阅读 · 0 评论 -
大整数加法(c++)
题目描述比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。输入输入数据有多组。首先输入一个整数T,表示有T组输入。每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。输出对于每组输入,输出两个整数的和,单独占一行。样例输入21 2112233445566778899 998877665544332211样例输出31111111111111111110#include<std...原创 2022-01-10 21:28:23 · 874 阅读 · 0 评论 -
AcWing 1096. 地牢大师(三维 BFS)代码详细注释
原题链接:https://www.acwing.com/problem/content/1098/题目:你现在被困在一个三维地牢中,需要找到最快脱离的出路!地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。请问,你有可能逃脱吗?如果可以,需要多长时间?输入格式输入包含多组测试数据。每组数据第一..原创 2022-04-08 14:09:49 · 188 阅读 · 2 评论 -
1247. 后缀表达式(贪心C++)acwing蓝桥杯
这道题,开始看的时候我的第一感觉是,先排序,然后用所有的 +号 先把最大的数加起来,然后用 -号从最小的数开始减,但是这种策略算出来的值并不是最大的。正确思路:原创 2022-01-11 12:31:39 · 178 阅读 · 0 评论 -
N的阶乘 大整数阶乘(c++)
https://www.acwing.com/problem/content/3392/输入一个正整数N,输出N的阶乘。输入格式输入包含多组测试数据。每组数据占一行,包含一个整数N。输出格式每组数据输出占一行,输出N的阶乘。数据范围1≤N≤1000,每个输入最多包含100组数据输入样例:4515输出样例:241201307674368000#include<iostream>#include<algo...原创 2022-01-10 21:31:17 · 765 阅读 · 0 评论 -
线性筛法(素数筛)
一个O(n)时间复杂度的筛选质数的算法:#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=1000000;int primes[N],cnt;//primes数组存放质数int minp[N];//存放最小质因子bool st[N];//当前有没有被筛选int get_primes(int n){ for(int i=2;i原创 2022-01-20 22:48:22 · 565 阅读 · 0 评论 -
等腰三角形-第九届蓝桥省赛-C组
本题目要求你输出一个由数字组成的等腰三角形。具体的步骤是:先用 1,2,3,… 的自然数拼一个足够长的串。 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。 比如,当三角形高度是 8 时:输入格式:一个正整数 n,表示三角形的高度。 3<n<300输出格式:输出,用数字填充的等腰三角形。为了便于测评,我们要求空格一律用 . 代替。具体,可参照样例。输入样例:在这里给出一组输入。例如:5输出样例:在这里给出相应的输出。例如:.原创 2022-01-24 00:06:44 · 485 阅读 · 0 评论 -
数的范围( 二分 经典模板题目)
给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回.原创 2022-01-22 23:50:22 · 210 阅读 · 0 评论 -
AcWing 836. 合并集合(并查集)
原题链接:https://www.acwing.com/problem/content/838/题目:一共有n个数,编号是1∼n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:M a b,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; Q a b,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为M a b或...原创 2022-03-08 20:35:04 · 170 阅读 · 0 评论 -
动态求连续区间和(树状数组c++)
原题链接:https://www.acwing.com/problem/content/1266/目录树状数组解法(参照y总思路):AC代码:给定n个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b]的连续和。输入格式第一行包含两个整数n和m,分别表示数的个数和操作次数。第二行包含n个整数,表示完整数列。接下来m行,每行包含三个整数k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第a个数加b...原创 2022-03-07 12:06:40 · 799 阅读 · 0 评论 -
acwing854. Floyd求最短路
原题链接:https://www.acwing.com/problem/content/856/不清楚floyd最短路原理的同学可以参考一下这篇blog:https://blog.csdn.net/weixin_52797843/article/details/121643355?spm=1001.2014.3001.5501目录代码实现:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定k个询问,每个询问包含两个整数x和y...原创 2022-03-11 13:28:29 · 173 阅读 · 0 评论 -
快速幂取余a^b mod c
(a^b) mod c = ((a mod c)^b)mod c,对于数据较大选择快速幂取余算法,如果b是偶数a^b=(a^2)^(b/2)=((a^2)^2)^((b/2)/2)如果b是奇数a^b=a*(a^2)^(b/2)原创 2021-12-22 11:47:50 · 411 阅读 · 0 评论 -
货仓选址(贪心 中位数)详解
思路:解题思路主要是找到一个位置,到达每个商店距离和最小。解题关键是如何找到这个最佳位置。也就是中位数,先将所有数轴上的商店排序,中间值就是最佳位置。原创 2021-12-21 17:40:56 · 547 阅读 · 0 评论 -
糖果传递(数学 贪心 中位数)图文详解
思路:每个小朋友拥有糖果a[1]~a[N],第一个小朋友给出糖果数X1,第二个给出X2.X3....Xn.。要求最小的代价,也就是min(|X1|+|X2|+....+|Xn|),先求出平均糖果数量ave(小朋友最终糖果数量),推导公式转化为求min(|X1-c1|+|X1-c2|+...+|X1-cn|),原创 2021-12-21 17:19:21 · 679 阅读 · 0 评论 -
判断是否是正方形(C语言)
#include <stdio.h>#include <math.h>double juli(int a1,int a2,int b1,int b2){ double dis=0; dis= sqrt((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2)); return dis;}int main(){ int a1,a2,b1,b2,c1,c2,d1,d2; double a[6],t; wh...原创 2021-12-23 19:11:04 · 1556 阅读 · 1 评论