Mai___
码龄4年
关注
提问 私信
  • 博客:25,142
    25,142
    总访问量
  • 21
    原创
  • 1,374,046
    排名
  • 10
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2020-06-29
博客简介:

Mai___的博客

查看详细资料
个人成就
  • 获得46次点赞
  • 内容获得7次评论
  • 获得212次收藏
  • 代码片获得1,768次分享
创作历程
  • 3篇
    2022年
  • 20篇
    2021年
成就勋章
TA的专栏
  • 笔记
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

激光炸弹注释

首先要弄清楚题目是什么意思如上图现在有一个3*3的炸弹爆炸范围,图中的线与线之间的交叉点就是建筑物如果这个建筑物也就是交叉点在爆炸范围的边上,那么这个建筑物是不会被摧毁的所以想要摧毁的建筑物最多也就是价值最大,就要如同上图中的2号红色框一样进行轰炸这样就可以轰炸最多R * R,也就是9个建筑物弄清楚题意之后,思路也就出来了前缀和算法来存储二维前缀和,然后通过容斥定理遍历每一个大小为R * R的矩阵(轰炸范围)找到价值最大的那一个输出即可,代码如下#include<iostream&.
原创
发布博客 2022.01.20 ·
514 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

蓝桥杯—带分数

暴力思路:首先我们观察样例100 = 3 + 69258/714转化为n = a + b/cn是题目中给出的数据,我们就只需要对a,b,c进行枚举即可我们通过递归列举出1~9的全排列然后从第一个排列开始,将其划分为三段,分别对应三个数比如说123456789现在取a = 1;b = 5;c = 3那么a = 1b = 23456c = 789这样分别对a,b,c取不同的位数,我们就可以列举出123456789中a,b,c的所有取数情况然后分别代入式子n = a + b/c判断等式.
原创
发布博客 2022.01.08 ·
395 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

递归实现指数型、排列型、组合型枚举

#include<iostream>using namespace std;const int N = 20;int st[N];int n;void dfs(int u)//当前正在填的位数 { if(u > n){//边界,此时已经填完了n位 for(int i = 1;i <= n;i++){ if(!st[i]) continue; cout << i << ' '; } puts(""); r.
原创
发布博客 2022.01.07 ·
274 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

有依赖的背包问题(C语言)

思路就是
原创
发布博客 2021.11.06 ·
634 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

完全背包(C语言)

完全背包与01背包不同之处就在于它的物品可以取用无数次可以研究一下的它的状态转移方程所以从图中的推导就可以看出将01背包滚动数组的逆序更新转换为顺序更新就行因为根据状态转移方程可以看出用到的是第i行的数据,所以需要顺序更新滚动数组代码如下#include<stdio.h>int f[2000];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i = 0;i < n;i++){ int .
原创
发布博客 2021.10.27 ·
452 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

多重背包问题的二进制优化(C语言)

之前一直不理解,为什么多重背包与01背包是类似的用朴素法解决多重背包时,操作的集合分为不取i物品,取一个i物品,取两个i物品……取s个物品所以解题的思路就是在01背包的基础上再加一重循环,将以上集合的全部列举出来,选择其中的价值最大值代码如下#include<stdio.h>int v[1005],w[1005],s[1005],dp[1005];int main(){ int n,m,i,j,k; scanf("%d%d",&n,&m); for(i = .
原创
发布博客 2021.10.25 ·
661 阅读 ·
5 点赞 ·
4 评论 ·
10 收藏

01背包的朴素解法及优化(C语言)

直接上题先说朴素的想法我认为动态规划的题目,都是要用到每一步的答案,将每一步的答案作为解题的线索那么题目让我们考虑有四个物品,分别告诉了你四个物品的体积和价值,且每个物品的数量只有一个让你利用这些条件找出一种物品序列,使其放入容量为5的背包后的价值最大那我直接搬出朴素的解法就是创建一个二维数组f[ i ][ j ]i表示物品的编号,j表示背包的容量,每一个f的值就代表往容量为j的背包中放入1~i号物品所能达到的最大价值那么创建好这个二维数组之后,就要开始对它进行赋值赋值的顺序是从左到右,
原创
发布博客 2021.10.21 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉树的四种遍历(C语言)

#include <stdio.h>#include <stdlib.h>typedef char ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};BinTree CreatBinTree(); /* 实现细节忽略 */void I
转载
发布博客 2021.09.24 ·
547 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

搜索树判断(C语言)

题目如下我整个题目的思路比较简单就是一个基本的建立二叉搜索树然后将题目输入的前序序列保存进一个数组a再将插入二叉搜索树中的元素进行前序遍历输入进一个数组b有个地方需要注意:由于二叉搜索树的建立是左子树小于根结点小于右子树故镜像二叉树需要将二叉搜索树中的元素进行右子树在前左子树在后的递归才能得到镜像二叉树的前序序列①若a与b相等,则提示输入的序列为某棵二叉搜索树的序列②若a与b的镜像序列相等,则提示输入的序列为某棵镜像二叉搜索树的序列③若a与b的两个遍历序列都不相等,则不是题示输入不是一棵
原创
发布博客 2021.09.15 ·
1100 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

还原二叉树(C语言实现)

就把这个题目当作建树的练手题了代码如下#include<stdio.h>#include<malloc.h>typedef struct node{ char data; struct node* left; struct node* right;}Treenode,*NodeP;char Pre[51],Mid[51];int Position(char data,char Mid[],int n); NodeP Insert(NodeP root,ch.
原创
发布博客 2021.09.11 ·
1162 阅读 ·
5 点赞 ·
0 评论 ·
17 收藏

汉诺塔的非递归实现(C语言)

题目如图整个算法的实质就是将问题不断细分,按照顺序压入栈那么现在存在几个问题①栈的元素是什么,应该如何定义栈的元素应该是一个一个的结构体,结构体成员中应该含有当前的待操作圆盘数n,以及A,B,C三根杆(按照起始、中转、目标放好)②循环的实现当栈顶元素的待操作圆盘数为1时,打印 起始杆->目标杆(可以理解为只有一个圆盘的操作,只需要将该圆盘移动至目标杆即可)当栈顶元素的待操作圆盘数不为1时,对其进行问题的细分,例如当前的操作目标是将n个圆盘从A移动至C,那么就将问题细分为1、将
原创
发布博客 2021.08.21 ·
3290 阅读 ·
15 点赞 ·
2 评论 ·
87 收藏

堆中的路径(C语言)

题如上图思路:①用数组来代替堆的建立②动态建堆(一开始直接往数组中插入全部的元素,然后从第一个非叶子结点逐个与其左右结点进行替换,发现存在漏洞,当你从下往上进行完一轮排查替换后,新的堆并不一定符合堆的定义,发现是因为刚开始的元素本就是乱序,并没有结点之间的大小关系,所以从顶上淘汰下来的元素并不一定就与底部元素构成根结点大于左右结点的关系,所以只能动态建堆)①的实现:因为题目所给的数据是从一开始,所以将数组的首元素置为可能出现的最小值,从一开始输入元素②的实现:假设当前结点为i,那么它的根结点.
原创
发布博客 2021.08.17 ·
599 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

PTA练习4.2 平衡二叉树的根 (25 分)

将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。输入格式:输入的第一行给出一个正整数N(≤20),随后一行给出N个不同的整数,其间以空格分隔。输出格式:在一行中输出顺序插入上述整数到一棵初始为空的AVL树后,该树的根结点的值。输入样例1:588 70 61 96 120输出样例1:70输入样例2:788 70 61 96 120 90 65输出样例2:88
原创
发布博客 2021.07.27 ·
1335 阅读 ·
2 点赞 ·
1 评论 ·
8 收藏

根据后序和中序遍历输出先序遍历(C语言)

本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:Preorder: 4 1 3 2 6 5 7思路:其实就是.
原创
发布博客 2021.05.04 ·
3745 阅读 ·
3 点赞 ·
0 评论 ·
28 收藏

表达式转换(C语言实现)

算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式: 输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式: 在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样例: 2+3*(7-4)+8/4 输出样例: 2 3 7 4 - * + 8 4 / +本题的思路:该.
原创
发布博客 2021.04.14 ·
2565 阅读 ·
3 点赞 ·
0 评论 ·
27 收藏

一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1输出样例:15 24 -25 22 30 21 -10 20 -
原创
发布博客 2021.03.30 ·
246 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

最长连续递增子序列

给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(≤10^5);第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。输入样例:151 9 2 5 7 3 4 6 8 0 11 15 17 17 10输出样例:3 4 6 8#include <stdio.h
原创
发布博客 2021.03.30 ·
3250 阅读 ·
6 点赞 ·
0 评论 ·
13 收藏

邻接矩阵存储图的深度优先遍历

函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边数 */ WeightType G[MaxVertexNum][MaxVertexNum]; /* 邻接矩阵 */};typedef Pt
原创
发布博客 2021.03.26 ·
2297 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

是否二叉搜索树

本题要求实现函数,判断给定二叉树是否二叉搜索树。函数接口定义:bool IsBST ( BinTree T );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:定义:一个二叉搜索
转载
发布博客 2021.03.24 ·
738 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

习题3.12 另类循环队列 (20 分)

如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义:bool AddQ( Queue Q, ElementType X );ElementType DeleteQ( Queue Q );其中Queue结构定义如下:typedef int Position;typedef struct QNode *PtrToQNode;struct QNode { ElementType
原创
发布博客 2021.03.23 ·
247 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多