自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习总结。

网络编程是可以让设备中的程序与网络上其他设备中的程序进行数据交互的技术。

2025-03-30 22:22:32 1013 1

原创 《IO流》

IO(Input/Output)流用于处理数据的输入输出,如文件读写、网络通信、设备交互等。

2025-03-27 23:17:12 326

原创 。。。。。

【代码】。。。。。

2025-03-01 19:25:37 121

原创 生成迷宫,

【代码】生成迷宫,

2025-03-01 19:21:04 118

原创 迷宫建立。

【代码】迷宫建立。

2025-03-01 16:31:22 110

原创 排序。。。

冒泡排序:int main()i<n-1;i++){int flag=1;j<n-1-i;j++){a[j]=t;flag=0;i<n;return 0;选择排序:int main()i<n-1;i++){j<n;j++){int t=a[j];a[j]=a[i];a[i]=t;i<n;return 0;快速排序:while(i!=j){if(i<j){a[i]=a[j];

2025-02-22 13:15:08 681

原创 最小生成树。

从小到大遍历排序后的边,如果边的两个端点不在同一个连通分量中,则将这条边加入最小生成树中,并将这两个端点合并为一个连通分量。接下来 $M$ 行每行包含三个整数 $X_i,Y_i,Z_i$,表示有一条长度为 $Z_i$ 的无向边连接结点 $X_i,Y_i$。ii. 更新dist数组中与顶点v相连的所有未访问节点的距离,如果新发现的路径更短,则更新它们在优先队列中的位置。如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 `orz`。

2025-02-21 16:11:29 423

原创 普通二叉树(简化版)

定义数 x 的排名为集合中小于 x 的数的个数 +1。查询数 x 的排名。注意 x 不一定在集合里。以内的数)的集合,最开始时集合是空的。求 x 的前驱(前驱定义为小于 x,且最大的数)。若不存在则输出 −2147483647。求 x 的后继(后继定义为大于 x,且最小的数)。若不存在则输出 2147483647。查询排名为 x(x≥1) 的数。保证集合里至少有 x 个数。插入一个数 x,本题的数据保证插入前 x 不在集合中。保证执行 1,3,4 操作时,集合中有至少一个元素。

2025-02-21 09:53:35 722

原创 搜索。。。

表示花生田的大小为$M \times N(1 \le M, N \le 20)$,多多采花生的限定时间为$K(0 \le K \le 1000)$个单位时间。第$i + 1$行的第$j$个整数$P_{ij}(0 \le P_{ij} \le 500)$表示花生田里植株$(i, j)$下花生的数目,$0$表示该植株下没有花生。例如在图2所示的花生田里,只有位于 $(2, 5), (3, 7), (4, 2), (5, 4)$ 的植株下长有花生,个数分别为 $13, 7, 15, 9$。

2025-02-20 15:26:46 696

原创 测试。。。

当然,系统的内存也是有限的,但在一般情况下,对于题目中给定的输入规模(1≤N≤2×10^5,0≤M≤5×10^5),map 能够轻松应对,不会因为元素个数而轻易达到系统内存的极限。对于站在位置 1(即 i = 0,positions[0] = 1)的人,abs(positions[mid] - positions[0]) = abs(3 - 1) = 2。它不像二维数组那样需要连续的大量内存空间,而是可以在内存中分散存储,通过指针来建立节点之间的联系,提高了内存的使用效率,降低了超限的风险。

2025-02-19 21:10:21 389

原创 总结11..

学了图及最短路径问题,并刷了些题。

2025-02-04 21:16:25 408

原创 总结10..

之前学的忘了很多,今天还是复习与巩固,并做相应练习题;

2025-02-04 21:06:48 249

原创 总结9..

复习了一下之前的知识点,练了些搜索题。

2025-02-04 20:59:28 265

原创 总结8..

/ 如果当前节点的左子节点不是 '*'(这里 '*' 表示空节点),则递归遍历左子树。// 如果当前节点的右子节点不是 '*'(这里 '*' 表示空节点),则递归遍历右子树。// 定义结构体 node 表示二叉树的节点,每个节点包含左子节点 l 和右子节点 r。// 输出当前节点的值,实现先序遍历中先访问根节点的操作。// pos: 当前节点在数组中的位置,deep: 当前深度。// 记录第一个节点的值,作为二叉树的根节点。// 读取当前节点的左子节点和右子节点的值。// 输入每个节点的左右子节点编号。

2025-01-24 22:38:58 1491

原创 总结7。。

二叉树常的的遍历方法有前序遍历(NLR)、中序遍历(LNR)和后序遍历(LRN)三种遍历算法,其中 “序” 指的是根结点在何时被访问。所以,在[l, r]这个区间里,最大分数往往和r相关,因为r是区间上限,我们关注r以内最大的2的幂次方数。// c: 中序数组当前根节点位置,l: 中序数组左边界,r: 中序数组右边界。// 存储二叉树前序、中序遍历结果的数组。

2025-01-23 23:11:20 432

原创 总结6..

在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值,同时背包问题抽象化(X1,X2,…还有足够的容量可以装该商品,但装了也不一定达到当前最优价值,所以在装与不装之间选择最优的一个,即V(i,j)=max{V(i-1,j),V(i-1,j-w(i))+v(i)}。// 此时dp[i][j]的值等于不考虑当前物品i时,背包容量为j的最大价值,即dp[i - 1][j]

2025-01-22 23:44:52 891

原创 总结5..

if (book[tx][ty][link[hard].f] == 0 && fl == 0)//如果这个点的这个方向第一次遇到且到这个点期间没有遇到障碍物。if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界。if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界。if (tx<1 || tx>n - 1 || ty<1 || ty>m - 1)//是否越界。

2025-01-21 23:35:24 671

原创 总结4..

/ 如果不满足条件,将标志变量z设为0,表示当前方向找不到单词。// 定义函数p,用于在以(x, y)为起点的8个方向上搜索单词"yizhong"// 递归处理下一个元素,并且加上当前元素 a[x] 的值。// 输出标记后的结果,找到单词的位置输出原字符,否则输出'*'// 定义二维数组d,存储8个方向的偏移量,用于在二维数组中搜索单词。// 分别表示右、右下、下、右、左、左上、左下、右上8个方向。// 根据当前方向的偏移量更新坐标。// 定义二维数组b,用于标记找到单词的位置,初始化为0。

2025-01-20 23:11:13 677

原创 总结3..

/如果当前位置是目标点('@'),并且当前步数之和小于最小步数,且步数之和不为0。//定义两个二维数组c1和c2,分别用于记录从起点和终点到各个位置的步数,初始化为0。//遍历地图,找到所有目标点('@'),并计算从起点和终点到该点的步数之和。//分别是向右(0,1),向下(1,0),向左(-1,0),向上(0,-1)//计算当前位置下一步的步数,是当前位置的步数加1。

2025-01-19 23:10:00 1857

原创 总结2..

/递归调用dfs,继续拆分剩余的数值x-i,同时数组中元素个数增加1。//a是一个二维字符数组,用于存储输入的n个字符串,最多可存储30个长度为100的字符串。//遍历拆分结果数组a中已经存储的元素,除了最后一个元素,每个元素后面输出"+"//递归调用结束后,减少字符串a[i]的使用次数,恢复现场。//b是一个整型数组,用于记录每个字符串的使用次数,这里限制每个字符串最多使用2次。//搜索结束后,减少字符串a[i]的使用次数,恢复现场。

2025-01-18 20:59:07 1972

原创 总结1。。

/d数组用于表示四个方向的偏移量,分别是右、左、下、上,加上{0,0}方便后续循环处理。//定义全局数组b,初始值都为1200,用于存储每个类别中完成所有任务的最短时间。//如果当前位置的值为-1,说明找到了目标位置,输出距离并返回。//如果新位置在有效范围内,未被访问过,并且满足距离条件。//f表示队列头指针,r表示队列尾指针,s用于临时存储距离。//m用于存储输入的某种数据的数量,例如后续要输入的位置信息数量。//计算从当前位置到下一个位置的距离。

2025-01-17 22:53:59 901

原创 12.20总结

/ 根据对数换底公式 log_a(b) = log_c(b) / log_c(a),这里计算log_k(ratio)// 如果log_value等于其取整后的值,并且log_value是非负的,则返回1,表示满足条件。// 检查当前的(x, y)是否满足条件,如果满足则增加计数器。// 计算y与x的比值,转换为double类型以保证精度。// 输出满足条件的有序对(x, y)的数量。// 如果x为0,直接返回0,因为0不能做除数。// 检查是否存在非负整数n使得y/x = k^n。

2024-12-20 20:36:34 427

原创 细胞数量。

/cell表示细胞,book为标记数组。//表示往上下左右四个方向。//重新计算x的坐标。//重新计算y的坐标。

2024-12-19 22:33:28 264

原创 竞选C语言

/先假设当前字符串字典序小于等于已记录的最长字符串,用z标记,初始化为1表示满足。//定义二维字符数组a,用于存储输入的各个字符串,每个字符串最长300个字符,最多存30个字符串。//如果当前字符串的某个字符大于已记录最长字符串对应位置的字符。//如果z为0,说明当前字符串字典序更大,需要更新最长字符串及对应序号。//定义变量n用于存储输入的字符串个数,max用于记录最长字符串的长度,初始化为0。//获取当前字符串的长度。//max2用于记录当前最长的字符串,初始化为"0"

2024-12-18 22:25:57 399

原创 找到第k大

给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。// 如果k小于等于j,说明第k大的数在左半部分(l到j这个区间),继续对左半部分排序。// 如果i小于等于k,说明第k大的数在右半部分(i到r这个区间),继续对右半部分排序。// 否则,说明此时j + 1位置的元素就是第k大的数,输出它并结束当前函数。// 用于记录要查找的是第几大的数(这里从0开始计数,即第k + 1大的数)// 读取输入的整数个数n和要找的第k大的数的k值。

2024-12-17 20:47:34 564

原创 奇怪的电梯

/ 判断向下跳的位置是否合法(在范围1到n内)并且如果从当前位置向下跳到达down位置的步数比之前记录的到达down位置的步数要小。// 判断向上跳的位置是否合法(在范围1到n内)并且如果从当前位置向上跳到达up位置的步数比之前记录的到达up位置的步数要小。// 如果目标位置b的步数还是初始的那个很大的值,说明没办法到达,输出 -1,否则输出到达目标位置b的步数。// 定义全局变量,n表示范围,k数组用于存储跳跃步数,v数组用于记录到达某个位置的最少步数。// 读取范围n,起始位置a,目标位置b。

2024-12-16 22:12:15 572

原创 取数游戏。

一个 N×M 的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻 8 个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。// 初始化数组a的所有元素为0,sizeof(a)用于获取数组a的字节大小,保证全部元素被初始化。// 深度优先搜索函数,用于遍历相关的二维结构,寻找满足一定条件下的最优解(从代码中看可能是求最大和之类的)// 如果当前行达到了边界(这里假设n是行数,行的索引达到了n + 1 ,说明这一轮行遍历完了)

2024-12-15 22:07:45 982

原创 高手散步。

/ 回溯时,将当前边的权重从路径长度总和sum中减去。// 如果当前节点x与节点i之间有边,且节点i还未被访问。// 将当前边的权重加到路径长度总和sum中。// 从当前节点i开始进行深度优先搜索。// 读入每条边连接的两个节点以及边的权重。// 遍历所有节点,尝试寻找可扩展的路径。// 标记节点i已被访问。// 无向图,双向存储边的权重。// 邻接矩阵存储图中边的权重,相当于距离。// 标记当前起点已被访问。// 初始化路径长度总和。// 标记数组,记录节点是否已被访问。// 读入节点数量和边的数量。

2024-12-13 22:20:39 671

原创 选数。。。

/ 递归调用dfs,选择下一个数字,需要选择的数字数量减1,总和加上当前选择的数字。// 如果num能被i整除,说明num不是质数,将z设为0并退出循环。// 如果剩余可选数字的数量小于需要选择的数字数量,进行剪枝,直接返回。// 判断当前组合的和sum是否为质数,如果是,cnt加1。// a数组用于存储输入的整数,cnt用于统计满足条件的组合数量。// 定义全局变量,n表示整数的个数,k表示要选择的整数个数。// 如果num小于2,它不是质数,将z设为0。// 返回z,1表示是质数,0表示不是质数。

2024-12-12 22:08:39 444

原创 全排列。。

i=1,先判断book[i]是否等于0,此时进入赋值部分:a[1]=1,book[1]=1。i==2,同上a[2]=2,book[2]=1.继续推则有。a[1]=1,a[2]=2,a[3]=3 .此时n=4,输出序列1 2 3.book[3]=0(路走到尽头了),i=3,不再进入循环,回到第二层搜索,book[2]=0,再次判断,book[i]=0 (i==3),于是a[2]=3,book[3]=1,再次进入下一层搜索搜索a[3]=2,book[2]=1,得到序列1 3 2.(有点绕晕了,越讲自己越迷糊。

2024-12-11 22:09:47 296

原创 二分查找。

/ 返回目标元素x第一次出现的位置(数组下标从0开始,所以返回mid + 1)// 调用c函数在数组a中查找元素x第一次出现的位置,将结果保存在t中。// 如果目标元素x小于中间位置的元素a[mid],说明x在左半部分。// 如果目标元素x大于中间位置的元素a[mid],说明x在右半部分。// 参数a为待查找的有序整数数组,n为数组a中元素的个数,x为要查找的目标元素。// 函数c实现二分查找功能,用于在有序数组a中查找元素x第一次出现的位置。// 循环读取n个整数,存入数组a中,构建待查找的有序数组。

2024-12-10 22:12:10 485

原创 区间加(差分)

/ 计算差分数组b的初始值,b[i] = a[i] - a[i - 1]// 这相当于在原数组a的[y + 1, n]区间都减去z。// 综合起来就是在原数组a的[x, y]区间加上z。// 这相当于在原数组a的[x, n]区间都加上z。// b用于存储处理后的数据(差分数组相关操作)// 在差分数组b的y + 1位置减去z。// x, y, z用于操作中的区间和数值。// 在差分数组b的x位置加上z。// 通过差分数组b还原出处理后的数组。// 同时计算差分数组b的初始值。// 初始化最小值为b[1]

2024-12-10 22:10:10 376

原创 逆序对数简化版

/ a为原数组,temp为临时辅助数组,left、mid、right用于界定子数组范围。// 定义全局数组a用于存放待排序及统计逆序对的数组元素,最大可容纳100000个元素。// a为原数组,temp为临时辅助数组,left、right界定排序的数组范围。// j指向右边子数组当前元素,初始为右边子数组起始位置mid + 1。// 循环比较两个子数组元素,将较小的元素放入临时辅助数组temp中。// i指向左边子数组当前元素,初始为左边子数组起始位置left。

2024-12-09 16:20:20 1025

原创 求逆序对数(归并)

#include<stdio.h>#include<stdlib.h>// 合并两个已排序的子数组,并统计逆序对数量// arr为原数组,temparr为临时辅助数组,left、mid、right用于界定子数组范围long long merge(int arr[], int temparr[], int left, int mid, int right) { long long cnt = 0; // s1指向左边子数组当前元素,初始为左边子

2024-12-09 15:42:04 426

原创 归并排序。

/ arr为原始数组,temparr为临时数组,left、mid、right用于界定要合并的子数组范围。// arr为原始数组,temparr为临时数组,left和right界定当前要处理的区间范围。// 比较两个子数组的元素,将较小的元素依次放入临时数组temparr中。// 将临时数组temparr中的合并好的元素复制回原数组arr。// 合并函数,用于合并两个已排序的子数组,将合并结果存放在临时数组中。// 用于打印数组元素的函数,参数为要打印的数组和数组元素个数。

2024-12-08 21:57:38 651

原创 快速排序。

while (i < j && a[j] >= t) { // 从右向左找小于t的值。while (i < j && a[i] <= t) { // 从左向右找大于t的值。// 将基准元素t放到最终正确的位置(此时i指向的位置就是基准元素该放置的位置)// 快速排序的划分函数,实现对数组指定区间的元素交换和调整,以确定基准元素的最终位置。// 输出排序后的数组。// 将找到的小于t的值放到i的位置。// 将找到的大于t的值放到j的位置。// 从左往右找第一个大于基准元素t的元素,移动左指针i。

2024-12-08 20:29:49 441

原创 jack的字符串问题

去除非重复的单个字符,并保证只打印一次重复的字符。该题主要是运用标记,实现目的条件的输出。

2024-12-06 23:33:05 331

空空如也

空空如也

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

TA关注的人

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