- 博客(41)
- 收藏
- 关注
原创 数据结构复习总结(期末前更新)
图的存储及遍历// 巧妙邻接表int T;cin >> T;// 输出邻接矩阵++i) {++j) {// 计算度信息++i) {++j) {// 输出度信息++i) {else {// 输出孤立点++i) {if (!return 0;
2024-12-16 23:56:18
403
原创 计组实验-Bomb Lab -2
调用 `strings_not_equal` 函数,比较两个字符串是否相等。一个字符串是用户输入的,另一个字符串是 `rsi` 寄存器中存储的字符串常量。- 计算一个内存地址,并将其存储在 `rsi` 寄存器中。这个地址是一个字符串常量的地址,地址为 `0x2ab0`。否则,表示字符串不相等。- 如果字符串不相等,跳转到 `0x127d`,调用 `explode_bomb` 函数。- 调用 `explode_bomb` 函数,表示输入错误,炸弹爆炸。- 跳转到 `0x1278`,恢复栈指针并返回。
2024-12-16 20:46:03
787
原创 函数栈帧的小知识理解
eaxrax:用于存储函数的返回值。edirdiesirsi:在 System V AMD64 ABI 调用约定中,用于传递函数的第一个和第二个参数。rcxrdx:在 Microsoft x64 calling convention 调用约定中,用于传递函数的第一个和第二个参数。理解好函数栈帧的调用对于我们的理解以及计算空间复杂度都是很有利的,多多尝试理解会有好处。
2024-09-12 17:50:41
471
原创 计组 2.Linux上程序的编写与调试
我们之间使用vim创建.c文件,在里面编写完成后按住esc后冒号加wq保存退出再使用gcc编译.c文件即可。
2024-09-06 17:18:58
551
原创 前端了解到框架-网络复习
超文本标记语言 画页面 各种各样的标签组成页面进行展示 桌面创建文本修改后缀即可<html><head><title><meta><body><h1><h6><h1><h6><p><a><img><ul><ol><li><table><tr><td><div><span><form><input><button>
2024-07-27 22:09:12
1197
1
原创 从java到JDBC学习笔记
这种方式更加灵活,因为Java不支持多重继承,如果你的类已经继承了另一个类,就不能再继承。这个异常对象可以是Java标准库中的异常类型,也可以是自定义的异常类型。它通常用在方法体内,用来抛出一个具体的异常对象。接口的特点是可以精确控制每个元素插入的位置,可以通过索引来访问元素。Java集合框架通过提供这些接口和类,极大地简化了集合的处理。接口支持常规队列的操作,如插入、移除和检查队列的头部元素。方法的方法体就是线程执行的代码。:一个有序的集合,可以包含重复的元素。这些集合类存储的都是对象的引用。
2024-07-20 22:24:10
778
原创 深圳技术大学c++ 多重继承
1.请设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是基类,它包含基本的学生信息,如姓名、类别(本科生还是研究生)、所学课程(这里假定为3门课,用数组表示)成绩和成绩等级等;信用卡,有卡号(int)、姓名(string)、额度(int)、账单金额(float)、信用卡积分(int)。生成旅程信用卡对象,输入卡信息,调用对象成员函数完成旅程网下单、信用卡刷卡、信用卡退款、信用卡积分兑换为旅程积分等操作。
2024-05-28 23:43:51
760
原创 c++大作业 调整字幕的时间
有时候人们能够下载一些感兴趣的视频但是发现并没有字幕,到字幕网站上查找到字幕文件,但是发现时间进度上不能完美配合,一个视频数据的例子来源于链接:BBC.巴塔哥尼亚:地球秘密乐园 https://www.aliyundrive.com/s/LmF2sgrQzMu/folder/612af030c6fa4bf4b7cf498d96acda7b9ef9258e相应的字幕文件来自于链接:上述视频和字幕文件在时间进度上不能完美匹配。字幕文件内容由以下示例段落组成,具体可下载文件后查看:1。
2024-05-28 23:43:44
1428
1
原创 c++学习基础(一些零碎的知识点)(持续更新)
然而,使用new和delete也需要注意一些问题,如内存泄漏、异常安全等。在现代C++编程中,通常推荐使用智能指针(如std::unique_ptr和std::shared_ptr)来自动管理内存,以避免这些问题。
2024-05-23 00:54:11
1310
2
原创 kmp算法
请求出 T 在 S 中所有出现的位置。这个问题,我们需要在给定的文本串S中找出模式串P的所有出现位置。如果采用暴力匹配的方法,我们可以按照以下步骤进行操作:假定目前我们在文本串S中已匹配到的位置为i,在模式串P中已匹配到的位置为j。
2024-04-07 19:40:44
910
3
原创 基础算法 bfs和dfs
bfs是一种基础的搜索算法,讲的是看看有多少种方法可以到达一个点。通过队列这一个数据结构来达到找到最小的距离(不断的入栈出栈)dfs讲究是是一步到底,逐步回退,通过递归解决。1和0就代表着这个点是不是已经走过了。这样就可以不重不漏的遍历完成了。还有另一种更简单的搜索算法。下面用一道例题来讲解一下。
2024-02-27 19:34:12
612
1
原创 网上训练补题
这里最好用c++的容器,因为这个不能硬开数组,会过大,我写一个丑陋的一维数组来模拟的。利用head找到最开始的那个人,然后next数组依次输出。前缀和的思想会容易解决这一个问题,全部统计完直接遍历即可。博弈论,初始位置就决定了谁是试图平局的那一方。反复比较两个数列头尾相减的最大值即可。每次的耗电量相比后直接相减即可。要注意单个B也可以是正确的。按顺序比较字符串即可。
2024-01-22 10:03:44
542
原创 纯c实现栈和队列 数据结构大全
栈是一种后进先出的数据结构,可以用数组来模拟实现,掌握必要的数据结构是非常的有必要的一样是先打出头文件因为栈的特性,栈对比链表简单了不少接下来我们来实现它的功能接口。
2024-01-22 10:03:35
761
原创 纯c实现顺序表 数据结构大全
struct dplist//动态 更常用int* a;int size;//有效数据个数;int capa;//顺序表当前大小}sl;这里是定义,调用前面的begin函数void sltest()//定义begin(&sl);
2024-01-14 02:00:37
835
原创 深圳技术大学实验课 数组1
需要注意第一个交换后数组的变化,避免影响到第二次交换。这道题也是疯狂遍历,得到我们想要的数再进行去重。需要定义一个最大值数组,再通过遍历处理。
2023-12-28 13:03:28
745
1
原创 深圳技术大学 数组2
这题乍一看很难,但是我们可以在原先二维数组的基础上在右边复制一个,然后对m的值 对n取模,再之间输出就行了。这道题定义一个字符二维数组然后慢慢判断就好了,稍微长一点,细节处容易出错。注意对角线下的元素的特性就是j
2023-12-28 12:59:05
736
1
原创 深圳技术大学11月月赛(未补题版)
c题我想吃烤鸭 一开始我没有想到二分(就是题做少了) 我本来想用h/n的特殊情况特殊判断的,但是这样的话程序非常复杂,(后面也没找到这120行的破代码的问题),换句话就是我比较傻一点当大模拟做了。f题考验高中知识,等差数列的前n项和,注意要用double类型。这种大量可能性的可以考虑二分,简单粗暴。
2023-11-29 00:47:47
628
3
原创 关于文件的预处理这件事以及操作
否则其结果就是未定义的。这⾥我们想想,写⼀个函数求2个数的较⼤值的时候,不同的数据类型就得写不同的函数。#ddefine还可以来定义宏 #define 机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏 (参数列表的左括号必须紧邻,如果两者之间有任何空⽩存在,参数列表就会被放到后面去)#再加上一个变量可以将这个变量转化为一个字符串,可以打印出来一些正常打印打印不出来的字符串,因为函数传参打印的时候不会打印出来实参,而是会打印形参,所以#在一些特定场合还是有它特殊的作用的。
2023-11-22 17:33:19
780
3
原创 动态内存总结加上文件操作详解(各种操作)
而fgets则是读取文件中的内容,并放置在我们定义的数组里面,注意只能读取19个这一句话,并且一个fgets只能读取文件中的一行,无论我们定义的数组有多大 ,并且因为后面有\0,打印出来的会自动换行。第一部必然是打开文件,我们用一个指针pf来接收,这样也方便维护,然后下面的代码就是一个标准的打开和关闭操作,也是后面内容的基本模板。这两个函数用法还是跟前面类似的,除了二进制的区别,就不多加解释了,此外二进制的文件我们正常打开是看不懂的东西,需要有其他来打开。
2023-11-19 11:41:32
677
4
原创 熬夜第一次打div3的历程 (纯c版本)
b的话我当时理解了好久,因为真的看不懂英语。看懂了之后第一反应是用前缀和再一次次拆分来算,但是我这个傻子竟然想不到long long能给我整爆。然后就是e题,这道其实是第二简单的题,b卡到爆炸的我都一下过了,记得开数组的时候大一点,不要re。在事后想了一下发现前缀和的操作其实是没必要的,不如套两层for硬加。这一道题就单纯签到,比拼手速。c题的话就是维护一个区间前缀和。先贴上菜菜的wa代码。
2023-11-18 15:42:06
593
3
原创 倍增入门c语言加上st表——讲解入门
先来讲讲思路,想必大家看到这里的时候,一定想到了前缀和加二分算法来解决这个问题,但是我们也会发现当t比较小的时候,这个的速度反而不如遍历了(我们不妨来尝试一下倍增)所以我们自然引入了倍增,倍增我是这样理解的,既然二进制位可以表达出所有的数,那我们为什么不尝试着用这一种思想来表达出n的最大值呢。假如给你一个数列,给定一个整数t,使其前n项和不符合大于t。这道题个人认为是一道最好入门倍增的一道题。
2023-10-09 22:44:15
688
1
原创 排序总结 (难得希尔有的讲解)
个人感觉这一段是最不好理解的,那我稍微讲解一下(看其他博主只讲了原理而没有一行行解析),temp是作为一个储存当前循环中最右边的那个值,如果while里的条件符合,那我们进行交换,注意只是把较后面的那个值修改成立前面的那个值,这样循环最前面的那个值是没有更新的,当j-h小于0后,说明上面的j已经是最左边的了,要将其重新加回h后将temp赋值回去。冒泡排序是一种最基础的排序,主要思路就是先输入一个数组,然后从第一个往后一次比较,每一个都把最大值放置到最后面,然后依次将数组减小(因为每一次循环最大的都放好了)
2023-10-06 20:03:14
618
1
原创 快速幂的纯c实现 新手教程
要么我没就会使用c函数库中的pow函数,但是pow返回的值是double类型,不好取模,并且数据太大很容易溢出,所以我今天介绍一种简单的快速幂写法。因为不管多大的数我们都可以用二进制表现,(p&1)就是看p的最右位的数值,p=p>>1则是在判断一次后将全部的二进制数值左移一位,tmp的自乘就是为了符合当前二进制为是1的时候的大小,取模是因为这样就不会数据溢出了。由于很多题要取模处理,所以我们先明确一个数学问题(a*b*c)%p=a%p*b%p*c%p,这是一些基本的前置知识。这段代码主要是想求x的y次方。
2023-10-05 00:30:27
603
1
原创 湖南理工学院2022年程序设计竞赛新生赛 加上几次河南的萌新赛 加上一点个人的训练(一个新手的做题感悟)
这道题的思路我看大家都是dfs,但是这个数据很小,我就用了递推(其实是没学dfs),这个递推的时候注意没赋值的数组要给个16,防止死循环。其实说个人感受,这道题可能会更加的考一点点小思维,总之也是简单题目,找到n,m的最小值,再使用阶乘算出小的行数怎么放进大的行数就ac了。这道题我没想到用双指针怎么写(菜菜),但是很容易想到了前缀和,但是就单单前缀和的话,时间复杂度会爆掉,所以我尝试着加上了二分,ac了。这题也就是题目长,其实我们会发现我们完全不会输,从第二回合开始遍历,有j就赢,没有就平局。
2023-10-04 19:19:37
534
1
原创 二分 (纯c简单实现)
如果不相等的话,如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除。如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除,并不断更新区间。这段代码中,我们先输入了要查找的数组的长度,然后输入了目标值,最后用自己写的二分查找search函数来查找目标值的下标,记录在value中,最后将其打印出来。在一般的题目中,全部暴力枚举会非常的浪费时间,这个时候就要引进二分这一种程序写法,帮助我们节省跑代码的时间。首先选择数组中间的数字和需要查找的目标值比较。
2023-10-04 14:36:25
526
2
原创 一维与二维数组的前缀和与差分 (纯c实现)
那么我们这样做,在a[l] 加上w a[r + 1] 减上w,a[l]加上w代表着[l, n]加上w, a[r + 1]减上w, 代表着[r + 1, n]减去w, 这样子所有标记完之后,做一遍前缀和就是答案,加上w后面的数在前缀和的情况下都会加上w,那么相对应的减去w的意思就是后面的数不再加上w,也就是抵消影响。给定一个数组, 数组大小为1000,接下去有1000次操作,每次操作给定一个区间[l, r] 和一个权值 W,区间[l, r]里面所有的数字加上W,操作完成之后,输出数组。
2023-10-03 10:16:11
568
原创 (纯c语言,新手友好) 最长上升子序列(给大家dp入个门)
看到这道题的时候,题目意思很好理解,但是又有一些让人无从下手,很多人的第一反应还是迭代,但是我们会发现迭代(也就是for循环)会让我们的代码极其复杂,那我们直接学习一个动态规划的方法。f[i]跟自身比较的原因我举一个简单的例子,7 8 3 9 当a[j]到3这个数的时候f[i]可能已经为三了,所以说f[i]可能会被赋值多次,要取到最大的那一个。定义两个数组,一个是动态的也是关键一步。这一段代码就凸显出定义max函数的作用了,同时也是dp的最重要一步,两个循环,我个人认为最难理解的是这一段。
2023-09-24 13:35:06
885
1
原创 (纯c语言,新手友好) 二叉树(百练题单)
首先我们先观察题目,我们会发现同一个节点下面的数值除了2就会变错上面的那一个数值,那么如果要找到那一个公共的结点,我们其实只是需要两个数值谁大谁就除以二,直到相等为止,问题就解决了。这个题目看起来还是有点吓人的,(谁让他叫二叉树),但其实思路很简单。
2023-09-24 13:16:40
450
1
原创 纯c语言(新手友好) 神奇的口袋递归思路讲解
其实这道题的难点在于我们如果用正常的思路去做题,组合以及组合后大于,小于或者等于40会非常的麻烦,很难表达,单纯的for循环会在这道题颇有限制,而dp现在对于新手来说还是没那么必要的,那我先贴上代码再讲解一下递归思路。当b为0的时候就是40已经算完了,而a<=0则是防止递归太多次返回的不为0就会出现问题,b==0,和a<=0为特殊情况,那最后一行的return则是代表了40要不要减去当前的数列中存放的那个值,这样就完美的避开了这道题的难点。
2023-09-24 13:09:22
589
2
原创 洛谷宇宙密码的解决方案(加上了讲解)纯c语言
然后这道题的大概思路就清晰了,总结一下这道题的难点其实在于前导0和一个逆向思维,也希望对这道题大家的思维有所帮助。对于这一道题,相信看到的你们和我一开始一样极其懵,因为你会发现要实现的东西过于复杂,一下子会没有清晰的思路。所以我们要选择另辟蹊径,从反面来得出密码(也就是先有再判断)然后我们再使用简单粗暴的x,y来防止前导0对我们造成困扰。我们直接选择用pow先生成出所有的可能性。最后我们要好好利用count以此来判断。话不多说,先贴上代码,后面再加上思路。然后我们需要一些变量防止a,b变化。
2023-09-24 11:22:54
928
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人