自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 搜索题解

思路:先初始化地图time数组为10000,然后输入坐标和爆炸时间,判断此点以及周围4个点的爆炸时间会不会小于原本的时间,小于则更新此点地图time数组,标记初始点,找点,如果有一个点数值为10000,那么这就是安全的,输出这一点时间即可,如果最后点都用完了还没找到就输出-1.思路:在字符方阵中找到y并将其坐标存入数组,再找其八个方向是否有目标字符,有的话就深搜一个方向,能搜完就将数组标记,最好标记的就输入字符,没标记的就输出*。

2024-03-01 20:02:47 375

原创 题解之哈希表

思路:将字符串转换为数字存入数组,在比较是否相同。

2024-02-23 22:41:06 393

原创 题解之KMP

KMP算法:减少了时间复杂度,比如解决这个问题,找子串,就像你问你的MM:假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?当然这里还要求前后缀。当然可以用枚举法来求解,当时这个时间复杂度太大了显然是过不了的;只需要先对子串进行判断并用数组存起来,之后每一步都减少相应的步数以达到时间减小化().优化代码(KMP算法)

2024-02-22 21:02:51 359

原创 【无标题】

思路:先排序(用快排),再用两个右端点r1 , r2,每次r1右移到。思路:用深搜来使k个整数相加再判断该数是否为素数即可。中间的那一段一定都是满足条件的,我们让sum。的最后位置的下一位,r2右移到满足。也就是是说, 此时如果。

2024-02-21 19:26:36 304

原创 题解

思路:将棋盘分为4个象限无论在哪个象限都一样,那么我们就统一为第一象限,可以发现规律,如果n=m,那么输出为n*2;=m,那么输出为他们的差*2+小值*2-1;仔细读题就可以发现,先走完小一点的(注意要交叉走,然后走一步停一步,直到走完)。思路:首先不是每个都要是一,因为平衡要尽量大,只要保证两个数互余且有一个数要大于n(否则分不了)注意此时其中一个数也和x互余,更新sum等于其中一个小的(因为是最大公约数),不断更新即可。

2024-02-20 20:56:34 362

原创 题解

思路:用结构体存入数据,再快排将数据从小到大排列,从前往后并查数据,直到s和t的老大为一个时结束循环,输出和即可。

2024-02-19 18:17:53 290

原创 题解

思路:首先先存每一个点的坐标,再把所有的距离求出来存入结构体数组里用快排将距离从小到大排,最后遍历所有的边(注意不能两次相通(用并查集来合并即可)),当小边等于哨塔数减去电话数即可结束循环。(因为当有电话是优先给两个相距最远的)。思路:首先要明白n个点组成树就有n-1条边,然后用结构体数组存相接的两个点和长度,用快排从小到大排好序,用并查直接找不相接的点并加起来,如果有n-1条边就结束循环,如果最后没有n-1条边就输出orz。用快排从大到小排序,再从第一个数开始直到有第k个数算入其中(注意不能相通)。

2024-02-18 22:01:44 334

原创 题解

思路:先初始化数组dp,(值尽量要大),输入a[i][j] 表示从i到 j 要多久,从最后一个开始找最小值,一层一层找下去,最后输出dp[1]即可。思路:采用广度优先搜索,先入队,注意入队条件和标记(否则会进入死循环),直到队列为空。

2024-02-15 20:44:55 324

原创 【无标题】

思路:找到只有一个儿子的父亲为n个,2^n即可。先并查,再把价值和价钱相加,用背包找到最大价值。

2024-02-06 17:42:07 339 1

原创 【无标题】

思路:从根节点开始深搜,先输出根节点,再按顺序搜索左右节点输出即可(注意字符为*时不要输出)。思路:用一个结构体数组分别存入左右结点数,搜索左右节点并更新深度即可。

2024-02-05 23:24:00 327 1

原创 【无标题】

这个题我有了一点思路:采用性价比来写:就是将价值和价格相比的值存入数组再升序排序,显然过不了,那就再搜索,缩小范围搜。那么就用01,背包。

2024-02-02 23:03:31 369

原创 题解之好多好多

以此类推,t数组只有一个非a字符,那么就乘s数组(被替换数组)长度个2,输出即可;如果·t数组长度不为一就分两种情况,第一种就是t数组中有a,显然这时可以替换无数次,所以就输出-1,第二种,t数组中没有a字符,就乘s数组(被替换数组)长度个2,输出即可。思路:先利用中序和后序的特点(后序的最后一个是根结点,而根节点在中序中在中间),先找到根节点输出再将数分为两个,找左边树的根节点再输出找完左边找右边;刚开始选择并查集和深搜(时间超限了)还是可以得出答案的:主要有三步:合并,去重,深搜(不建议使用)。

2024-02-01 19:35:58 347 1

原创 【无标题】

这道题和并查集类似,这里我理解为第一个人的辈分小于第二个人,最后是亲戚的就会指向辈分最大的人,用递归来转辈分,用数组来存辈分。注意:这里有两个公司所以要用两个数组,而且有个公司用负数表示,所以这里要再加一个负号变为正数。然后判断和第一个朋友的朋友有多少个,最后输出小的那个+1(小明和小红也是一对);思路:和刚才那个题一样将朋友用数组存起,是朋友的都指向最初的朋友;

2024-01-31 21:58:35 354

原创 题解之递归

从左边开始递归,逐渐结束,按序号输出。一道难以理解的题,这里选择递归。

2024-01-30 21:55:40 330 1

原创 题解之老是做不对(玉米迷宫)

思路:有三种点 # . A到Z;这里有点像迷宫但是多了条传送门,所以要多分一种情况(注意:在踩到传送门时标记踩到的而传过去的不要标记因为还要传回来,标记是为了不反复传,不标其实也可以,但不能乱标)这里我选择了bfs,因为这里求最短路径(其中使用了队列);并查集(思路):假设一个集合的老大是一个人(这里我们定义第一个数集合值为第二个数的值)。这里写了一个函数来将一个集合数都变成一个值。相应的判断一下即可。这里到最后的那个点并没有入列,所以要在循环外面输出。

2024-01-29 20:53:45 332

原创 题解之练手题

思路:只需要将危险点加和减掉威力(k),注意要判断边界点(不能越界):我这里用了max函数和min函数保证了不会越界,再用double类型写一个函数表示范围,在里面就加一,输出最大的即可。思路:把水龙头分为三个部分,第一个,中间,最后一个;因为中间的是双向流动,所以要除以二,要加上起始点,所以加一,输出最大值即可。思路:这个特别简单,其实输入m个不同字母,输出n遍即可,当然也可以反着来。

2024-01-28 22:23:51 360 1

原创 题解:矩阵二;k皇后。

思路:先定义第一个数是红然后往下搜;如果红比黑多就走两次,反之就令他为红,最后记得判断当红或黑大于n是要返回重来;接下来提供一种不好的方法:深搜(会时间超限)当时乍一看就想到了搜;右下到左上:i-j,因为怕有负数所以一般加上一个数,这里加上n。注意:先定义dp[i][j]表示前面i个中有j个红;因为前面的红色一定比黑色多所以不可能存在j>i/2;思路:用book数组标记,借助dfs函数多次递归;一道搜索题:可以巩固我们的写代码能力。这就是一个简单的正态规划代码。一道会了就很简单的题;右上到左下:用i+j;

2024-01-26 22:24:16 349 1

原创 题解;测后感

思路:因为酸度是相乘,苦度是相加,这里我们可以定义z=1乘接下来的数表示酸度,x=0加上接下来的数表示苦度;用酸度减苦度的绝对值记录下来,和下一组搜出来的结果作对比,输出最小的即可;这又又又是一道搜索题,相信有了前面的题做铺垫做这道题会非常快,这里我选择了深搜,因为要巩固一下。测后感即测试后的感受:1.一定要注意细节,有时候细节地方错了找都找不到(不要求快,求稳)。2.搜索时不仅仅要从第一个数搜起,还要选择从第二或第三个等等数开始搜。2.遇到不会的可以选择跳过;3.一定要先分析再上手敲。

2024-01-25 22:16:17 303

原创 题解;对搜索的简单理解;搜索你搞懂了吗,下次别用枚举了

bfs:可以使用队列,结构体等等,是一层一层剖析出来的,说白了就是由第一个点出发,再找到下一个符合情况的所有点,再由这些点出发找到接下来的点直到找完;这里我偷了个懒,直接用了#include没有选择队列(有点绕不明白),用c编译器是会报错的,要用c++编译器就是文件后缀为.cpp。像迷宫题就好使用深搜,因为它只需要在结束时改变路径数或输出路径即可,而且它的结束点好找;先读题:可以发现要解决的是马走的最少步数(别告诉我你不知道马走日字);这里我用了深搜(因为我比较喜欢:但是是过不了的)

2024-01-24 14:41:20 345 1

原创 迷宫题解;涂色题解;

4.注意不能用next数组来循环写下一步的位置(不能像迷宫题一样),应该全部写下来(6到10行)这里我觉得应该是因为迷宫题要写的是路径数,可以一条一条来但是要在最后记录,而这一题是画图,为零的都要改变。这样问题就会有所解决。思路:显然·可以从一个确定了是啥性质的0出发,把这一性质的0全部改为第三个数,最后打印即可(这里浅做介绍)3.为了确保数组可以存下越界的数(不能有a[-1][-1]),我们还是从a[1][1]开始输入比较好。注意事项:1.我们要越界处理(代码第四行),不然很有可能提前停止。

2024-01-23 21:27:21 733 1

原创 题解;广搜和深搜。

广度优先搜索(BFS)的原理是从起始节点开始,逐层地向外扩展搜索,先访问离起始节点最近的节点,然后再访问离起始节点稍远一些的节点,以此类推。具体实现时,可以使用队列来保存待访问的节点,每次从队列中取出一个节点进行访问,并将其未访问过的邻居节点加入队列,直到队列为空。广度优先搜索(BFS)的原理是从起始节点开始,逐层地向外扩展搜索,先访问离起始节点最近的节点,然后再访问离起始节点稍远一些的节点,以此类推。具体实现时,可以使用递归或栈来保存待访问的节点。每一行为一个满足条件的五位数,要求从小到大输出。

2024-01-22 19:14:17 406

原创 基础思维题的题解;数据结构初学;

对一个给定的正整数 MM,求出所有的连续的正整数段(每一段至少有两个数),这些连续的自然数段中的全部数之和为 MM。例子:1998+1999+2000+2001+2002 = 100001998+1999+2000+2001+2002=10000,所以从 19981998 到 20022002 的一个自然数段为 M=10000M=10000 的一个解。

2024-01-22 14:18:51 961

原创 chatGPT工作流

四个字概括:单字接龙。根据上文结合自身模型输出下文。模型⇒大脑,模型决定chat的下文生成。那么,如何让chat输出我们想要的结果而不是胡乱生成?提前训练ChatGPT的大脑即模型。

2024-01-15 19:22:29 411

原创 1.递归函数。2.返回值运用。3.二进制转换。

注意:如果Y年是闰年,则第一个闰年是Y年。例题1.有一天,皮皮扬有钱了,就叫上了CC去吃一个榴芒,到了店里的时候,皮皮扬买了M个芒果班戟,她想把这些芒果班戟放在N个盘子里,允许盘子可以不放,不过皮皮扬的思维不好,不知道怎么放这些,现在就需要我们来帮皮皮扬算一下一共有多少种不同的分法?1.将字符串转换成二进制:(这个相对容易,只需要字符的ASCII码值减去字符0的ASCII码值在转换为二进制存起来即可)给定一个正整数Y表示起始年份,以及一个正整数N,你的任务是告诉从Y年开始的第N个闰年是哪一年。

2023-12-10 14:03:11 55 1

原创 求函数;较大数处理;定义函数。

两只蚂蚁碰面后向反反向走,求所有蚂蚁都落下杆子的最长时间和最短时间。输入杆长,蚂蚁数,蚂蚁所在位置。求函数(n,n<=2;(n-1)+(n-2)+c(n-2,n))c为组合数。关于定义函数,有时因为数较大可以选择long long类型定义,同上差不多。因为数比较多,所以可以先算出来,之后把要用的取出来即可。因为数比较大可以每次都对10000取余,不会影响结果。定义函数:例如蚂蚁问题。比如:求阶乘和输入n,

2023-12-02 20:45:12 31 1

原创 桶排序,辗转相除法,找字符组中与字符串相等的个数

/注意:初始化c=0,a[]中的数要大。运用下标进行换算,思路简单,在排好了序的同时还去了重。但是整数不能过大且内存占的多。printf("最大公约数:%d,最小公倍数:%d",c,d);运用‘\0’结束,用循环结构判断。例题:求最大公约数。

2023-11-19 22:09:11 38 1

原创 求自然数和之和s=1+(1+2)+……+(1+2+3+……+n);N*N矩阵的应用;选择排序法;

n*n矩阵的定义是形如a[][],在解决相关问题是可以借助一维数组来解决。注意:初始化b[100]={0};t[100]={0}.引入两个数并初始化为0,用for循环输入,再输出即可。思路:运用嵌套循环进行排序,先找出最值,一个一个比。思路:借助b[]来进行冒泡排序,借助t[]来换序;例题:输入n*n矩阵将每一行的平均值按升序排列。注意:x+=y可以写为x=x+y。

2023-11-12 16:29:00 72 1

原创 1.找最大值;数组排序。2.级数求和。3.二维数组。

1.找最大值和数组排序是有区别的:前者只需要用一个循环即可,后者则需要用两个循环一一对比并换位。如下:不同题有不同的解法,就比如这里的最值换位问题需要注意两次循环找最值,可以先找最小值在换位,再找最小值再换位。2.级数求和相对简单:3:二维数组运用了嵌套循环。

2023-11-05 22:39:10 48

原创 关于c语言中的不同类型的数据在内存中储存方式

C语言中,不同类型的数据在内存中的存储方式是由编译器和计算机架构共同决定的。数组:在内存中按照连续的方式分配存储空间,数组元素之间的距离为数组元素的大小。double:通常占用8个字节的内存空间,以IEEE 754标准表示浮点数。float:通常占用4个字节的内存空间,以IEEE 754标准表示浮点数。结构体:在内存中按照成员定义的顺序依次存储,每个成员根据其大小进行对齐。char:通常占用1个字节的内存空间,存储为有符号整数。int:通常占用4个字节的内存空间,存储为有符号整数。if语句括号后不能加;

2023-10-29 22:11:37 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除