自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【LinuxC系统编程】信号(signal.h)疑难杂症之:为什么 #include <signal.h> 之后 sigset_t 和 SIG_BLOCK 还是未定义?

文章摘要: 在Linux环境下,当使用#include <signal.h>后仍出现sigset_t和SIG_BLOCK未定义时,这是因为这些特性属于POSIX标准而非ISO C标准库。解决方案是在所有头文件之前定义_POSIX_C_SOURCE 200809L宏。这是因为glibc的特性测试机制要求在首次包含任何头文件前就确定功能级别,通过features.h中的内部宏(如__USE_POSIX)控制条件编译。若宏定义顺序错误,会导致后续包含的signal.h无法激活POSIX相关功能,从而缺

2025-08-20 00:17:13 491

原创 【Arch-Linux,hyprland】常用配置-已实验成功指令大全(自用)(持续更新)

本文介绍了Hyprland窗口管理器的配置指南,主要包括:1)触控板双指滑动和窗口透明度设置;2)Vim行号和tab键配置;3)输入法安装和自动启动配置;4)VSCode鼠标缩放和透明度调整;5)Windows D盘挂载到Linux的方法;6)常用快捷键如Ctrl+U删除终端行等。通过修改配置文件实现个性化设置,适合Arch Linux用户参考。

2025-07-30 22:18:16 581

原创 【算法】【蓝桥23国A软件C】四版代码思路分析与逐步优化

题目来源:第十四届蓝桥杯大赛软件赛国赛C/C++大学A组。

2025-04-10 19:49:21 597

原创 【C/C++】滑动谜题(leetcode T773)

(即 720),因此时间复杂度为 O(720),即在最大状态数下,BFS 的复杂度是 O(N),其中 N 是状态的个数。我们需要在一个 2x3 的谜板中,进行数字的交换,使得最终的状态变成 [[1,2,3],[4,5,0]]。,同时记录每个状态的步数。通过队列来保存待探索的状态,每次从队列中取出当前状态,生成所有可能的后继状态,并将未访问过的状态加入队列。对于每个状态,生成所有可能的后继状态,如果后继状态是目标状态,则返回当前步数 + 1。移动 1 次: [[4,1,2],[0,5,3]]

2025-04-06 21:27:33 1255

原创 【C/C++】打开转盘锁(leetcode T752)

你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字:。每个拨轮可以自由旋转:例如把'9'变为'0''0'变为'9'。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为'0000',一个代表四个拨轮的数字的字符串。列表deadends包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串target代表可以解锁的数字,你需要给出解锁需要的最小旋转次数,如果无论如何不能解锁,返回-1。【测试用例见文末】

2025-04-06 16:41:04 850

原创 【C/C++】在排序数组中查找元素的第一个和最后一个位置(leetcode T34)

给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。

2025-03-23 10:05:17 545

原创 【C/C++】二叉树的最大深度(leetcode T104)bfs dfs经典例题 每日一遍

DFS(深度优先搜索),BFS(广度优先搜索),二叉树,队列,递归。给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。3。

2025-03-23 09:27:17 615

原创 【C++】sort函数的两种用法

std::sort可以接受一个第三个参数,指定自定义的比较函数或函数对象(仿函数)。通过自定义比较函数,你可以对容器元素进行不同的排序。

2025-03-21 22:08:13 589

原创 【C++基础】Lambda 函数 基础知识讲解学习及难点解析

本文时lambda函数的保姆级教程,从不会到会到精通只需要耐心读完并消化本文即可总结Lambda 函数是一种匿名函数,适合用于简化代码和实现小型功能。捕获列表决定了 Lambda 函数如何访问外部变量。Lambda 函数常用于 STL 算法和回调函数中。注意事项捕获列表的使用需要谨慎,避免不必要的值拷贝或引用捕获。如果 Lambda 函数的逻辑较复杂,建议单独写一个普通函数。

2025-03-21 22:00:38 1070

原创 【C/C++】最长回文子串(leetcode T5)

给你一个字符串s,找到s中最长的 回文 子串。"bab""aba" 同样是符合题意的答案。

2025-03-16 16:57:35 360

原创 【C/C++】 最小覆盖子串(leetcode T76)

分析原因:s.length()的返回值是无符号整型(毕竟字符串的长度没有负数),那么当把负数和其比较就可能会导致负数的自动类型转化,从而导致数值发生改变。2.如方法二中演示的方法,先把s.length赋给一个整型变量,再进行比较。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。中重复字符,我们寻找的子字符串中该字符数量必须不少于。t 中两个字符 'a' 均应包含在 s 的子串中,中存在这样的子串,我们保证它是唯一的答案。中找到最小的子串,使得该子串包含字符串。

2025-03-16 16:47:26 880

原创 【C/C++】相交链表(leetcode T160)

这篇文章讲解了如何在两个单链表中找到它们的相交起始节点。文章首先分析了题目要求和示例,接着提出了解决方案——使用双指针法:通过设置两个指针在链表中同步遍历,如果指针到达链表末尾,就切换到另一个链表的头部。这样两个指针最终会在相交节点相遇,或者都为 NULL(表示无交点)。文章详细解释了为什么双指针法有效,并对时间复杂度和空间复杂度进行了分析,最后总结了思路和相关的扩展问题。

2025-03-12 18:06:54 1147

原创 【C/C++】环形链表Ⅱ(进阶)(leetcode T142)

我们之前学过环形链表的初级知识,学会了使用快慢指针,学会了判断是否为环形链表,现在题目进行进阶,我们来寻找成环的节点,又要有怎么样的知识呢?(还不会的读者可以先看。

2025-03-12 17:49:57 1170

原创 【C/C++】环形链表(初级)(leetcode T141)

指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。,判断链表中是否有环。链表中节点的数目范围是。给你一个链表的头节点。

2025-02-26 22:39:06 323

原创 【C/C++】删除链表的倒数第 N 个结点(leetcode T19)

通过维护两个指针来一次遍历链表,避免了多次遍历链表的低效方法。:要特别处理删除头结点的情况。

2025-02-26 22:21:48 573

原创 【C/C++】合并K个有序链表 (解法一)(leetcode T23)

通过比较两个链表的节点值,将较小的节点依次加入新链表,并确保新链表仍然是升序的。是当前合并的两个链表的长度。合并K个链表的时间复杂度为。:通过将所有链表两两合并,最终合并成一个完整的升序链表。请你将所有链表合并到一个升序链表中,返回合并后的链表。函数合并两个链表,涉及到链表的遍历和指针操作。给你一个链表数组,每个链表都已经按升序排列。具体来说,逐步合并的方式使得时间复杂度接近。将它们合并到一个有序链表中得到。

2025-02-24 22:25:43 632

原创 【C/C++】分隔链表 (leetcode T86)

这道题的难点在于如何分隔链表,并保证每个分区内的相对顺序不变。通过分两次遍历原链表并插入新的节点,可以有效地解决该问题。如果没有在开始对res->next=NULL;的话,会导致最后返回的时候不知道res->next是什么。,在第二次遍历的时候走的都是第一轮改过的路径,即都走的是小于x的值。两个分区中每个节点的初始相对位置。,请你对链表进行分隔,使得所有。1.没有使用temp,导致。链表中节点的数目在范围。给你一个链表的头节点。

2025-02-21 21:49:00 907

原创 【C/C++】合并两个有序链表 (leetcode T21)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。:由于两个链表都是升序的,每次合并操作都可以直接选取较小的元素,因此该方法的时间复杂度为。:合并两个升序链表,关键在于逐个比较两个链表的节点,将较小的节点添加到结果链表中。• 两个链表的节点数目范围是 [0, 50]:处理其中一个链表为空的情况,确保代码的健壮性。:如何通过指针操作将两个链表合并为一个新链表。:熟悉链表的遍历和合并操作。分别是两个链表的长度。

2025-02-21 20:20:09 683 1

原创 【C/C++】题目:团建 降级变形题目(2024蓝桥杯软件A组省赛改编)

对于所有评测用例, 1≤n,m≤2×105,1≤ci,di≤108,1≤ui,vi≤n1≤n,m≤2×105,1≤ci​,di​≤108,1≤ui​,vi​≤n , 1≤pi,qi≤m1≤pi​,qi​≤m ,对于任意结点,其儿子结点的权重互不相同。在第二个样例中,两个序列可以为 [10,20,40],[10,20,30][10,20,40],[10,20,30] ,最大前缀为 22。在第一个样例中,两个序列可以为 [10,20],[10,30][10,20],[10,30] ,最大前缀为 11;

2025-02-19 22:18:28 521

原创 【C/C++】后缀表达式 蓝桥杯/ACM备赛

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。后缀表达式中,运算符总是出现在两个操作数之后,意味着在运算符出现时,操作数已经在栈中准备好。如:3*(5-2)+73*(5-2)+7 对应的后缀表达式为:3.5.2.-*7.+@3.5.2.-*7.+@。本题中运算符仅包含 +-*/+-*/。这句话的意思是:定义一个变量c,从str中逐一取元素,c的类型根据str决定,所以前面是auto。

2025-02-17 22:40:16 1802

原创 【C/C++】每日温度 [ 栈的应用 ] 蓝桥杯/ACM备赛

该程序以C语言为主,利用了C++的一些函数:(但是不可以再Leetcode提交)天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。(由于题目来源于Leetcode,所以没有主函数)题目来源:Leetcode739.【,表示每天的温度,返回一个数组。

2025-02-09 22:03:39 1332

原创 【C++语法】【STL】“for ( auto &c : str )”类型的循环

语法解析auto &cauto:自动推导c的类型(char,如果line是&c,表示c直接绑定到line的字符上,可以修改line里的字符。line一个或(如c依次代表line里的每个元素。

2025-02-08 20:45:45 665

原创 【C/C++】圆括号编码(Parencodings) 蓝桥杯/ACM备赛

算法考点:字符转换与编码问题题目描述令S=s1 s2 … s2n是一个正则(well-formed)的圆括号串。S可以编码成2种不同的形式:(1) 编码成一个整型序列P = p1 p2 … pn,pi代表在S序列中第i个右圆括号前的左圆括号数量。(记为P-序列)(2) 编码成一个整型序列W=w1 w2 … wn,对每一个右圆括号a,编码成一个整数wi,表示从与之匹配的左圆括号开始到a之间的右圆括号的数目(包括a本身)。

2025-02-05 13:58:39 507

原创 【C/C++】回文问题:判断+构造 蓝桥杯/ACM备赛

一、基础知识必备:判断回文题目描述输入一个字符串,判断是否为回文。输入描述输入文件包含多个测试数据。每个测试数据为一个字符串。字符串中只包含小写字母字符,长度不超过100个字符。输入最后一行为end,代表输入结束,无需判断是否为回文。输出描述对每个字符串a,如果该字符串为回文,则输出"a is a palindrome!",a为输入的字符串。如果a不是回文,则输出"a is not a palindrome!

2025-02-05 13:51:00 602

原创 【C/C++】加密字符串 (曾经最难的题目(the hardest problem ever)) 蓝桥杯/ACM备赛

题目描述加密规则为:对原文中的每个字母,转换成字母表后面第5个字母,如原文中的字符为字母A,则密文中对应的字符为F。你的任务是解密,将密文翻译成原文。ciphertext(密文):A B C D E F G H I J K L M N O P Q R S T U V W X Y Zplaintext(原文): V W X Y Z A B C D E F G H I J K L M N O P Q R S T U加密时,只有字母字符才按照上述规则进行加密。

2025-02-01 17:25:18 514

原创 【C/C++】打字纠错(WERTYU) 蓝桥杯/ACM备赛

输入文件包含若干行,每行可以包含数字,空格,除“A”、“Z”、“Q”外的大写字母,以及除反引号“`”外的标点符号。除此之外,也不会错按到Tab、BackSpace、Control等标记了单词的按键。一种常见的打字键入错误是将键盘上的键位错按成它右侧相邻的按键,如下图所示。比如想键入“Q”却误按成“W”,想键入“J”却被误按成“K”。你的任务是对上述错误的打字方式进行正确地“解码”。你的任务是将每个字母或标点符号用它左边的符号替换,输入中的空格原样输出(即空格不会键入错误)。

2025-02-01 17:12:18 340

原创 【C/C++】Soundex编码(Soundex) 蓝桥杯/ACM备赛

Soundex编码方法根据单词的拼写将单词进行分组,使得同一组的单词发音很接近。例如,"can"与"khawn","con"与"gone"在Soundex编码下是相同的。而字母A,E,I,O,U,H,W和Y不用任何数字编码,并且相邻的、具有相同编码值的字母只用一个对应的数字代表。输入文件中每行为一个单词,单词中的字母都是大写,每个单词长度不超过20个字母。对输入文件中的每个单词,输出一行,为该单词的Soundex编码。2代表C,G,J,K,Q,S,X或Z;1代表B,F,P或V;

2025-02-01 17:05:37 392

原创 【C/C++】弹球游戏(Linear Pachinko) 蓝桥杯/ACM备赛

但与传统的弹球机器不同的是,在本题中,一个弹球游戏机器是包含多个以下字符的序列:孔(".")、地板("_")、墙壁("|")、山峰("/")。如果弹球能通过孔,那么弹球最终穿过机器;当在字符上方抛下弹球时,弹球通过孔或出边界的几率分别为:1=100%, 2=100%, 3=100%, 4=50%, 5=0%, 6=0%, 7=0%, 8=100%, 9=100%。本题要求解的是,如果弹球随机的从机器的上方抛下(随机的意思就是从每个字符位置上方垂直抛下的机会均等),那么弹球最终能通过孔和出边界的几率是多少?

2025-01-31 22:32:33 812

原创 【C/C++】扫雷游戏(Mine Sweeper) 蓝桥杯/ACM备赛

扫雷游戏是在n×n的网格内进行的,其中藏有m颗地雷,这些地雷分布在不同的位置。如果点开了没有地雷的位置,则显示一个0~8之内的整数,表示这个位置的8个相邻位置中地雷的数目。对每个测试数据,输出对应的地图,每个位置都用正确的符号填充:已经点开并且没有地雷的位置用0~8之内的整数表示,注意,如果某个位置藏有地雷且被点开了,则将所有地雷的位置都用“*”号表示;接下来又是n行,每行n个字符,每个字符为“X”或“.”,其中“X”表示已经点开的位置,“.”表示没有点开的位置。如果不是地雷,输出该位置周围的地雷数量。

2025-01-31 21:14:57 579

原创 【C/C++】三子棋(Tic Tac Toe)五子棋 蓝桥杯/ACM备赛

其中一个玩家(用字母字符“X”表示)先走棋,在一个没有被占用的网格位置中放置一个X,然后另一个玩家(用字母字符“O”表示),在一个没有被占用的网格中放置一个O。这两个玩家交替地放置X和O,直到棋盘的网格都被占用了,或者某个玩家的棋子占据了整条线(水平、垂直或者对角线)。输入的第一行是整数N,表示测试数据的个数,接下来有4N-1行,表示N个棋盘格局,每两个棋盘格局之间用空行隔开。你的任务是读入棋盘状态,问可不可能是一个有效的三子棋棋盘,也就是说是否存在一系列走棋,能到达该棋盘状态。

2025-01-31 21:13:44 495

原创 【C/C++】约瑟夫变形:网络拥堵解决方案(Eeny Meeny Moo) 蓝桥杯/ACM备赛

德国的城市被标上1~n的序号。然后选择一个数m,首先切断第1个城市的网络,然后间隔m个序号,切断对应城市的网络,如果超出范围,则取模,并且忽略已经被切断网络的城市。例如,如果n=17,m=5,被切断网络的城市依次为:[1, 6, 11, 16, 5, 12, 2, 9, 17, 10, 4, 15, 14, 3, 8, 13, 7]。输入文件包含多个测试数据。在删除过程中,如果删除的节点是Ulm城市(即编号为2的城市),则说明当前的。对于给定的n值,求最小的m值,使得Ulm城市(2号)最后被选中切断网络。

2025-01-30 07:30:00 1035

原创 【C/C++】开关灯游戏 蓝桥杯/ACM备考

例如,在下图(a)中,如果作了"X"标记的按钮按下后,则各灯的状态如下图(b)所示,在该图中,阴影表示灯是开着的。游戏的目的是,从给定的初始状态出发,按下某些按钮使得所有灯都关闭。(3) 要使得第1行的灯全关闭,只需要按下第2行中对应的按钮即可,重复这一过程,可以使得前面4行的灯全部关闭。如下图所示,按下第2行第3列和第5列的按钮后,第2行第4列的按钮的灯,由关变成开,然后又由开变成关。(2) 如果一个按钮按下两次,则第2次按下的效果只是取消了第1次按钮按下的效果,没有意义,所有没有哪个按钮需要按下2次。

2025-01-28 22:33:14 1637

原创 【C/C++】约瑟夫环|出列游戏 蓝桥杯/ACM竞赛备赛

输入文件包含多个测试数据。每个测试数据占一行,为两个整数n和m,2≤n, m≤100,代表有n个人(序号从1开始计起),每轮报数要报到m。n=m=0,则表示输入结束。n个人围成一圈,第1个人从1开始报数,报数报到m的人出列;然后又从下一个人从1开始报数;重复n-1轮游戏,每轮游戏淘汰1个人,最后剩下的人就是胜利者。对每个测试数据,输出占一行,为最后胜利者的序号。循环链表的输出(用于调试程序)

2025-01-27 19:36:39 383

原创 【C/C++】尺取法(滑动窗口算法)-子序列 详细分析教程·蓝桥杯/ACM备赛

给定长度为N的整数数列a0a0​, a1a1​, ..., aN−1aN−1​以及整数S,10<N<100000,0<aiai​<10000,0<S<100000000。求总和不小于S的连续子序列的长度的最小值。如果解不存在,则输出0。尺取法(Sliding Window)是一个非常有效的算法技巧,常用于解决包含子数组、子序列、字符串等问题。每个测试数据占2行,第1行为整数N和S,第2行为N个整数。对每个测试数据,输出一行,为求得的解,如果解不存在,输出0。1.k代表长度,所以数组的角标要写成i+k。

2025-01-25 16:07:25 485

原创 【C/C++】创建链表例题学习

该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。单向链表的头尾指针保存在全局变量head和tail中。输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。

2024-11-03 18:57:18 869

原创 【C语言难题】打印蛇形回文数(PTA)

输入两个整数 n 和 m,输出一个几 行 m, 列的矩阵,将数字1 到nxm 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数 n 和 m。输出格式输出满足要求的矩阵。矩阵占 几 行,每行包含 m 个空格隔开的整数。数据范围输入样例:3 3输出样例:1 2 38 9 47 6 5。

2024-10-13 11:06:38 434

原创 【C语言好题分享】逆序整数(pta) · 循环语句之flag变量的运用

对于n位的两个正整数x和y,可以把x表示为x1​x2​…xn​,其中xi​(1≤i≤n)表示整数x第i位上的数字;把y表示为y1​y2​…yn​,其中yi​(1≤i≤n)表示整数y第i位上的数字。如果x1+k​=yn−k​(0≤k≤n−1)始终成立,则x和y互为逆序整数。给你两个正整数A和B, 判断两个整数是否互为逆序整数,并输出相应的结果。注:题目保证正整数A和B。

2024-09-23 21:40:38 297

原创 【C语言难题】‘加一’ { 满分解答 } +‘力扣初次使用’经历

对于编程题目,函数的签名、输入和输出的描述通常会在题目的说明部分提供,开发者需要根据题目要求进行实现。如果你遇到具体的代码实现问题,我通常会设计出符合题目要求和签名的解决方案。通过这种方式,编写的函数可以直接返回结果并且能够与LeetCode的自动测试系统兼容。(3)在LeetCode和其他在线编程平台上,题目通常提供函数签名,要求开发者根据这些签名来实现具体的功能。设置一个参数,每次减一,最后一个数时减到零,如果不为0,输出","数组所表示的非负整数,在该数的基础上加一。(2)如何在数字中间输入“,”

2024-09-23 11:15:43 609

原创 【C语言函数】对<malloc函数>的基本理解·非常透彻!

实参→形参→返回一个void类型的指针,这个指针指向了40个字节的存储空间→强制类型转换为int型的指针→赋给ip这个指针变量。void *malloc ( unsigned(形参类型名) size(形式参数));调用结果为新分配的存储区的首地址,是一个void类型指针。40的来源:一个int型变量的存储空间(4字节)*10。所以现在ip这个指针变量就指向了40个字节的整型空间。有返回值,返回一个void类型的指针。在内存分配一个size字节的存储区。若分配失败,则返回NULL(即0)。

2024-09-23 11:08:26 434

原创 【C语言基础题分享】打印数字金字塔(PTA)

一个数字金字塔,第i行输出的数字全为i,总的输出n行。请在屏幕上输出以下(行数n从键盘输入) 图形。

2024-09-20 20:49:49 1335

空空如也

空空如也

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

TA关注的人

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