自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类与对象(末)

注意:初始化列表->定义很多人可能会把这部分当成定义但这部分实际上是声明,不是定义,我们不要理解错了。所以我们建议尽量使⽤初始化列表初始化,

2025-02-17 19:41:25 584

原创 类和对象详解(下)-----运算符重载

什么是运算符重载呢?简单举个例子就懂了。现在我们就可以运行了(注意,日期的加法并没有那么简单,这里只是简单写了一下),我们细细拆解一下,为什么刚才加号不能用,现在就能用了呢?来看重载函数前面的Date是这个函数的返回值,operator+代表是对加号进行运算符重载,然后括号里面代表需要的参数,现在我们来回忆加法的使用情况首先,加法需要两个操作数,一定是A+B,两个操作数,而函数的参数就是从左到右同样这个代码也可以正常运行,那我们接下来来验证一下从左到右的,我们稍微修改一下代码,

2025-02-16 21:16:08 707

原创 类与对象C++详解(中)-----构造函数与析构函数

如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要⽤ 初始化列表才能解决,初始化列表,我们下个章节再细细讲解说明:C++把类型分成内置类型(基本类型)和⾃定义类型。内置类型就是语⾔提供的原⽣数据类型, 如:int/char/double/指针等,⾃定义类型就是我们使⽤class/struct等关键字⾃⼰定义的类型。好,那有没有人有疑问,什么叫做默认构造函数呢?没有参数或所有参数都有默认值(全缺省)的情况下就是默认构造函数,我们自己写的也算。

2025-02-15 21:08:55 783

原创 类与对象C++详解(上)

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。

2025-02-15 16:19:20 888 1

原创 预处理详解

_FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义他是在预处理阶段完成的,不过vs只能看到运行完的结果,如果想看预处理的,就需要你用vs code编译器,这边我没有下载,就不演示了如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。

2024-09-25 15:50:14 621

原创 c语言动态内存分配

/在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的⽅式有两个特点:•空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。

2024-09-18 15:57:52 1987 2

原创 联合体与枚举以及结构体补充

既然我们的数据类型是按int来开辟的,一次开辟4个字节,就是32个比特,a放进去,b放进去,c放进去,还有15个比特位没有放,但这时,已经不够放d了,所以我们重新开辟一个字节的空间去放d,所以最后大小就是8个字节。把un.i改为1,他的存储应该是00 00 00 01,如果是低位存储的话,应该此时char和int共用01这段空间,所以un.c也被改成了1,反之高位的话,char占据的是00的空间,是不变的。其中male代表0,women代表1,secret代表3,这个是默认的,当然我们也可以人为改变。

2024-09-16 10:16:27 806

原创 结构体内存对齐(你可能不知道但很重要的知识)

接着我们看第二道题,同理,先是char,对齐数是1,接着又是char,对齐数是1,最后是int,对齐数是4,然后结构体的大小应该是max(1,1,4),所以最后是4的整数倍,而此时大小正好是8,满足条件。char占一个,紧接着存了s4,s4中有三个元素,对齐数分别是8,1,4,依据第四条规则,我们取8,所以应存到第八个位置,接着24正好是4的倍数,所以int能够存,然后所有元素中最大倍数是8,分别是(1,8,4),所以最后大小是32.这时就用到了第三点(好了,说正事,说明这篇文章对你很重要,你应该看下去。

2024-09-15 15:41:18 942 1

原创 浮点数在内存中的存储以及浮点数大小的比较(IEEE754规定)

本篇文章我们讲一下浮点数在内存中的存储,,,在大部分编译器中,他是满足,IEEE754规定的如果你不知道他的正确答案,说明你需要这篇文章IEEE754规定:对于32位的浮点数(float),最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M对于64位的浮点数(double),最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M这个规定是什么意思呢?首先,对于任意一个浮点数,它可以精确或者粗略的表示为。

2024-09-11 16:28:11 2130 2

原创 A-B数对(洛谷p1102)

大家可以看完那道来看这道,他要找到所有A-B=C的数对,那么我们的一个基本思路是什么,给出B和C,那么我们就可以算出A,然后在对应的数组里找到A,算一个。那这里有个细节,有几个A呢?我们用lower_bound找一遍,再用upper_bound找一遍,之间的不就是A的数量,然后就是这样,贴代码。然后这段代码的作用就是减少运行次数,如果这个A没找到,后面的数越来越大,那更找不到,直接退出循环就好。这道题和之前那道题类似,相当于是拓展,都是对lower_bound和upper_bound的应用。

2024-09-09 10:33:56 353 2

原创 查找(洛谷p2249)

好,然后接着我们来看题,这道题是一个典型的二分查找(就是他给出的数据是一个有序的序列,然后每次可以与他中间元素比,每次都能缩小一半的范围),但是二分查找很容易写错(特别容易写错)因为他会有一个区间的问题,并且他还有一部分的细节要求,他的思路还是二分查找,但是我那个是找到就停了,大佬的这个是找到了都不停,一直在用二分的方式在逼近最左端,最后拿下了,这种方式比我的更快,大家可以观摩一下。因为vs编译器认为scanf这个函数是不稳定的,但是scanf_s并没有scanf好用,所以需要加上这一句话。

2024-09-05 19:44:18 552 3

原创 洛谷p1090合并果子(C++)

这道题是典型的哈夫曼编码,建立两个数组,第一个数组用来存入数据,接着第一个数组每合两个,将新值存入第二个数组,那么下次再取两个最小值时即比较第一个数组的首元素(去掉已经用过的)和第二个数组存入的进行比较,选取较小的一个。初始化127,会初始化为一个很大且接近int类型上限的正数,如果初始化128,则会是很小很接近int类型下限的数,0就是0,初始化-1或255时,数组会初始化为-1。其中:memset函数本来是用来初始化字符型数组的,如果初始化整形数组,只能初始化0,具体可以看站内大佬写的博客。

2024-08-30 08:07:50 372

原创 贪心与sort的妙用(洛谷p2240,洛谷p1223,洛谷p1803)

鼠鼠在写了几道题之后发现,这几道题类似,所以就想放一块一起总结一下,用的思想就是所谓的“贪心”,就是局部最优->总体最优,但我感觉这个概念其实比较抽象,所以直接看题。。

2024-08-23 11:53:02 1302

原创 部分背包问题(洛谷p2240)

这个题应该算是思路比较简单的一道了(个人感觉),因为他是通过单价排序,把数据录进去之后根据单价排个序,然后遍历一下不就解决了吗?然后我们发现,一维数组不够存储我们需要的数据,那我们会想到什么呢?没错,结构体,然后排序用一下sort(非常好用的排序函数,不知道的友友可以学习一下)就可以了,最后保留两位小数,可以用这种形式:printf("%.2f", sumvalue);

2024-08-22 19:51:30 462

原创 外星密码(p1928)C++实现

我认为知道这个思路也不好完成这个代码的原因在于,当题目上给了一个完整的字符串,我们往往想着直接给一个string类型,但通过代码不难发现,他把读入的数据分了好多段读入,最后把需要的加入到字符串中,这种思想正是我们需要学习的。这道题其实第一个方法很好想,就是模拟,思路也不是很难,很考察思维的完整性和自洽性,鼠鼠写一半就写不下去了,然后看了看书,发现用模拟法的话这道题是真简单,先把第一种方法贴出来。

2024-08-22 16:30:36 496 1

原创 Function(洛谷p1464)C++实现

没错就是函数体,虽然主函数中定义的是long long,但在函数体里使用的仍然是int,因为鼠鼠刚开始以为int就够了,后面发现int不够,便改成long long但没想到还有漏网之鱼,大家写的时候也一定要注意了。比20大的我不是都转化为20了吗?”但仔细看,会发现,应该先转换,在判断是否存过对应的值,于是我们修改一下,便得到了新版的错误代码。当 a,b,ca,b,c 均为 1515 时,调用的次数将非常的多。这个是什么,只要稍微多写两道题,或者看到昨天的博客,就可以知道,这玩意就是记忆化搜索,即用。

2024-08-21 14:57:05 312

原创 数的计算(洛谷p1028)

可以看到红笔圈住的部分我们是需要重复进行计算的,将会浪费大量时间,那我们有没有什么办法把结果存储进来,算过的就直接调用呢?Time limit exceeded,意思就是超时了,这时就需要用到昨天的一个思路,记忆化搜索,在我看来,他的本质就是。这个题咱们的思路和上面的题相似,全都是化繁为简,如n=6,往下分就有三种情况。然后我们便能得到这样的程序,但是教的时候便会发现。这就用到了递归思想,于是可以写出这样的程序。要时便可直接调用出来。

2024-08-20 11:08:18 172

原创 栈(洛谷p1044)c++实现

这道题的第一个难点在于读懂题,,,他巴拉巴拉了一大堆,我硬是看了好几遍才看懂,实际的意思就是有一个栈(单方向进和单方向出的,大家应该知道吧,不知道的话可以看一下站内大佬的讲解,非常重要也是基础的一种数据结构),然后将n个不同的小球按顺序放入栈,在小球放入的过程中也可以把栈顶的一个或多个球有顺序的拿出来,大概意思就是这样。然后第二个难点是,如果想计算器编的简单,那你就得想的复杂,这边语言不好描述,我直接把书搬过来(应该不能算违权吧,我的博客这么小众)站内大佬写的,不是我。

2024-08-19 18:05:07 447

原创 过河卒(洛谷p1002)

会下象棋的大家都知道,过河卒是能左右移动的,而这道题说的是只能向右移动,这是一个区别,也简化了题目,像这道题用到的方法还是递推,和昨天那道题一样,即a[i][j] = a[i - 1][j] + a[i][j - 1]对吧,一个点的方法数就等于他左边那个点的方法数加上上边那个点的方法数,然后同理,就可以一直递推下去,假设没有马的存在,当目标坐标为(3,3)时,就可以得到如下图。然后如果在复杂了也是同理,,,但现在的问题是多了一只🐎,那怎么办呢,有马的地方就是到不了的地方,将。马和马控制的地方定为0。

2024-08-19 16:11:23 198

原创 数楼梯(洛谷p1255)

这道题用的是典型的递推思想,可以倒着来想,比如要走到1000个台阶,那前一步一定就在999或者998,那走到1000的方法数就等于走到999的方法数加上998的方法数。什么问题呢,其实是因为兔子生的比较快(斐波那契数量变化非常剧烈),超出了longlong的范围,所以我们应该怎么解决呢,答案就是高精度加法,高精度加法实际就是模拟加法的一个过程,然后用字符串类型来表示,然后把进位什么的都模仿一下,就可以了。好,这道题思路已经有了,那我们就能很简单的写出代码。

2024-08-15 10:14:49 290

原创 next_permutation函数用法及例题(洛谷p1618,p1706,p1088)

next_permutation是algorithm标准库中的一个标准函数,它可以表示[start,end)内存的数组中产生严格的下一个字典序排列。总结:这篇文章主要是讲了库函数的使用以及一些简单例题的讲解,如果掌握了函数的用法,这几道例题应该问题不大,其实这几类题都属于排列枚举的范畴,而排列枚举,我们可以首先考虑能否通过使用这个函数来简化思路。=M然后我就发现不对,每回都差一个,然后就加了一个-1.至于为啥差一个我也不是很清楚了,感觉是题目的问题,因为按。应该是不需要过多的解释,大家不懂的可以问我。

2024-08-13 16:03:28 695

原创 洛谷P1157 组合的输出(C++)

我们先按之前的思路来走,按样例来看,最开始是00000,接着是00001,符合条件的第一个是00111,我们按个位是1,十位(这里是二进制数,按理来说不该是个位,十位,但鼠鼠也不知道咋叫)是2,依次递增百位是3,那么00111这个数代表的就是123,接着就是01011,就是124,然后是01101,就是134,注意看,第三个输出的数就和样例给的不一样了,我先把代码贴出来(瑕疵版),具体思路和昨天那道题基本一样,但是这道题有个特殊的地方,他的输出方式是字典序(额,这个说法比较专业,但实际上知道就好)。

2024-08-13 09:10:58 343

原创 洛谷P1036 选数(C++)

那我们面临的第二个问题就是,3个1怎么找,这里其实c++正好有个函数可以实现这个功能,叫做__builtin_popcount(int n),他的功能就是比如n为15时,他会返回15的二进制形式(1111)中有几个1(没错,就这样就解决了)但是,这个函数,他只是在GCC编译器里才能使用,如果在其他编译器里,可能就没法用了(鼠鼠就是这样子,然后查了半天资料),但是,咱们可以试着模拟实现一下,也不是很复杂。这句话的作用就是判断哪里是1,“&”的意思就是与,即0&0=0,0&1=0,1&1=1;

2024-08-11 16:24:23 619

原创 洛谷P1618三连击(升级版)(C++)

这个题目我刚开始是卡住的,因为我想的是三次遍历,找到三个数,看他们是否符合那个比例,然后接着在判断是否是9个不重复的数字。但因为作者比较笨,9个不重复的数字怎么判断都不知道,然后就去看了答案。第二个问题,既然已经确定了三个数,那么只需判断他是否是9个不重复的数字了(当然,三个数字的范围应该是123-987),这时我们可以借助一个非常非常常用的方法,,例:如果分解出来的存在1,那么b[1]=1;首先比例刚开始就确定了,所以就可以只遍历一次,然后根据比例算出另外两个数。注意细节:注意比例中可以是0:1:2,

2024-08-11 08:01:23 195 1

原创 烤鸡(洛谷P2089)

这个题其实是比较简单的,但很多人可能不敢写10个循环,比如我。因为我当时想着10个循环,时间复杂度整这么高,不得把电脑算死,但实际上每个循环只运行3次,所以就还行。然后里面所有的循环都可以替换成这个宏定义,即rep(a,1,3)=for(int a=1;a++)能够简单一点吧。然后这道题理论上是还可以优化的,但是作者懒得优化了。(就是和是一定的,前面的数确定后,就可以约束后面数的范围)然后如果不想这么复杂的话可以加个宏定义。

2024-08-10 15:47:10 234

原创 c语言入门

因为目前学习的专业还没有确定,将来应该是向电气工程及其自动化或者计算机方向来发展。无论是哪种方向,我觉得c语言的基础都是必不可少的。自我介绍:大家好,我是一名刚接触c语言的小白,不定时的会在优快云上上传自己的一些学习经验。目标:通过学习,能够真正掌握c语言这种语言,并把它实际运用到以后的实际生活、工作中。学习编程,我觉得最重要的是动手实践,多动手去敲代码。大概一周花15个小时去学习c语言。

2023-07-20 17:11:53 52

qt实现计算器,标准科学与进制转换

下载时请注意,我的资源编译器是visual studio,是用vs写的qt代码,所以你的vs需要下载qt的插件,放一个b站视频大佬的链接:https://www.bilibili.com/video/BV1twpSeNEPn/?spm_id_from=333.337.search-card.all.click&vd_source=269968cefc1a2a82392e3f5fdc9efb06

2024-09-25

空空如也

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

TA关注的人

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