自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 9.10位组(bitset)

/将b转换成一个字符串。“bitset<1000>b”表示定义一个1000位的二进制数b。返回它转换为unsigned long的结果,如果超出范围,则报错。//将整数n转换成16位二进制。例如,b[k]=1表示将二进制数b的第k位置为1。将第k位的值改为val,即b[k]=val。若至少有一位为1,则返回true。返回它转换为string的结果。若没有一位为1,则返回true。

2024-03-27 21:32:56 238 1

原创 案例:字符统计

在读入每个字符时就可以累计它出现的次数,同时还可以求出最大次数x。,输出结果就符合题目要求。

2024-03-27 20:56:59 160

原创 9.9映射(map)

比如cap的注解是“帽子”,hat的注解也是“帽子”。在Python语言中,的确有字典(dict)这种组合数据类型,而且Python语言中的字典就是“键值对”的集合。:设A、B是两个集合,如果按照某种对应法则f,对于集合A中的任何一个元素,在集合B中都有唯一的元素和它对应,这样的对应叫做从集合A到集合B的映射。,在字典中收录了很多英文单词,每个英文单词都是互不相同的,,键是互不相同的,当然在这个例子里,值也是互不相同的。,身份证号是互不相同的,但是姓名可以是相同的。删除所有等于x的元素,其中x为键值对。

2024-03-27 19:11:24 255

原创 案例:考勤刷卡

【代码】案例:考勤刷卡。

2024-03-27 18:26:26 231

原创 9.8集合(set)

集合(set)是一个不能精确定义的基本概念,一般地说,:将元素插入到set中。:删除it指向的元素,

2024-03-27 16:54:58 205

原创 案例:约瑟夫环问题

相当于报数报到m的人出列。重复执行每一轮,直至队列为空。最初把1~n共n个数依次入队列。

2024-03-25 00:34:26 123

原创 9.7队列(queue)

日常生活中,在食堂打饭排队、在银行排队办业务,都是队列的例子。在计算机里,操作系统为每个应用程序维护一个消息队列,应用程序接收到的消息存放在队列中,应用程序根据先来先处理的方式处理每个消息,这也是队列的应用。队列最经典的应用当属广度优先搜索(BFS),在BFS算法里,需要用队列来存储正在访问的这一层和待访问的下一层的顶点,以便扩展出新的顶点。,返回值为队列头结点,该操作并不会使得队列头结点出队列。队列(queue)也是一种。要使用STL中的队列,必须。,参数为需要入队列的结点。,返回值为bool型。

2024-03-24 22:49:59 239

原创 案例:小蓝的括号串

具体方法为:依次读入每个括号,如果是左括号,则压入栈中;如果是右括号,则判断栈顶元素是否是与之匹配的左括号如果是,则弹出该左括号,如果不是或者栈为空,则可以判定括号不匹配。处理完毕,还要判断栈是否为空。,判断方法很简单,具体为:依次读入每个括号,

2024-03-24 18:50:45 96

原创 9.6栈(stack)

考虑往栈中按顺序插入23、17、45、19这4个结点,我们可以通过调整入栈和出栈操作的顺序,得到不同的出栈结点序列。日常生活中,超市存放购物车的轨道, 往往一端是靠墙,只能从另一端放和取购物车,这时这个轨道就是一个栈。因此,在执行pop()操作时,可以先用empty()函数检测一下,栈不为空才执行pop()操作。结点一般是随着数据处理的进行,逐步按顺序插入进来的,例如,在上面的例子里,“45 23 17 19”这样的出栈顺序是不可能的。,返回值为栈顶结点,该操作并不会弹出栈顶结点。,返回值为出栈的结点。

2024-03-24 17:42:59 390

原创 案例:后缀表达式

a-(b +c)-(d+e)=a-b-c-d-e,括号前的-号都把括号内的符号取反。a-(b-c)-(d-e)=a-b+c-d+e,括号前的-号都把括号内的符号取反。例如,后缀表达式2 3 5 + -,等价的中缀表达式是:2-(3+5)②将运算符移到对应小括号后,得到:( ( 2 3 ) + 5 ) *但是,转换以后的表达式最前面的操作数无法改变符号,且至少有一个减号。a-(b +c+d+e)=a-b-c-d-e,将3个加号变为负号。a-(b-c-d-e)=a-b+c+d+e,将3个减号变为正号。

2024-03-23 13:18:57 329

原创 9.5向量(vector)

说明, “”内要填模板的参数,其实就是指定容器中元素的类型。,并使用命名空间:using namespace std;什么是向量(vector)?要使用STL中的向量,必须包含。和数组类似, 可以通过。

2024-03-23 11:44:20 207

原创 案例:外卖店优先级

因为:假设每条订单的时间不同,则该订单的外卖店优先级要增加,其他外卖店的优先级要降低。但如果前后几条订单的时间相同呢?哪些外卖店优先级要调整,很复杂!上述算法的时间复杂度是O(MN),当1≤N,M,T≤10000时,是可以在1秒之内运算完毕的。该算法的时间复杂度为:max(O(MlogM), O(M), O(N) ),因为st数组保存了每家外卖店上一个订单的时刻,所以这样处理完全是可行的。在处理每条订单信息时,为什么可能要。,时间复杂度为O(MlogM);注意,所有订单都是T时刻以内的。

2024-03-20 17:19:49 227

原创 9.4数对(pair)

pair有两个参数,分别对应两个元素first和second的数据类型,它们可以是任意基本数据类型或容器,可以。,按类似于结构体成员去访问即可。如果有一个pair类型的变量p,它的2个元素就是。在数学上,两个具有固定次序的元素x、y组成一个。,只需要跟上一对圆括号,里面填初始值即可。例如,二维平面上一个点的坐标(x,y)(ordered pair),也称。

2024-03-20 15:06:53 221

原创 案例二:数位排序

本题也可以用结构体实现,设计一个结构体num使得一个数和它的数位之和构成个整体。对于1~n的每个数,可以事先求出每个数字的数位之和。本题使用sort函数先排序,再输出排序后的第m个数。调用sort函数对数组a进行排序,但。

2024-03-17 21:07:20 330

原创 案例三:质数环问题

如果pri非0,则i为质数,否则(pri[i]为0),i为合数。,直接输出"no solution",并判断相邻两个数之和是否为质数。另外,为简化质数的判断,可以。

2024-03-17 16:57:15 339

原创 9.3常用的库函数

如果num比正中的元素还要小,则如果num存在,则肯定位于前半段,不可能位于后半段,所以不需要考虑后半段;:如果数组中的元素是从小到大排序,则从数组的begin位置到end-1位置二分查找第一个大于num的元素,返回该元素的地址;如果元素是从大到小排序,则查找第一个小于num的元素,返回该元素的地址。如果参与排序的记录可以直接比较大小,比如基本数据类型(如int,double等),cmp参数可以不填,此时。,就是先按第一个元从小到大排序,第一个元素相同再按第二个元素从小到大排序,以此类推。

2024-03-17 15:42:18 784

原创 9.2STL简介

STL中的容器是用类模板实现的,这意味着用户可以指定容器中元素的类型。STL中的容器提供了丰富的成员函数,用以实现所需的功能。C++对模板(Template)支持得很好,STL就是借助模板把常用的数据结构及算法都实现了。,因为这三种容器都是访问受限的,不允许任意引用容器中的元素。不同类型的容器在其内部以不同的方式组织结点。可以直接使用STL中的实体来求解问题。

2024-03-17 10:41:54 308

原创 9.1数据结构基本概念

但数组太简单了,有很多局限性,以致于Python语言都不提供数组了。在Python语言里,最接近数组的是列表,而列表的功能非常强大,远非数组能比。除数组外,为了满足一些特殊处理,注意,在C/C++语言中,结构体可以包含不同类型的数据,这些数据称为成员;现代编程语言(C++、Java、Python等)对常用的数据结构和算法都作了很好的实现。,比如一个接一个(线性结构),一个对多个(树结构),多个对多个(图结构),等等。,因此要设计并编程实现一种数据结构,是比较复杂的。(串),也可能是比较复杂的结构体、对象。

2024-03-17 10:35:26 311

原创 案例二:约瑟夫环

分析:本题要求在出列时,

2024-03-13 21:56:13 316

原创 案例一:小王子单链表

每次循环,插入新的结点后,要输出整个链表中的结点。,表头结点的数据域不存储数据。为了方便处理,设置一个专门的。本题要求用链表实现。

2024-03-13 21:53:00 288

原创 8.7用结构体实现链表

我们知道指针的作用是用来指向某个变量。如果在结构体中包含一个基类型为同种结构体类型的指针成员,那就可以实现“串接”。//申请一个存放10个元素的空间,将存储空间首地址赋给p3。//申请一个存放5个元素的空间,将存储空间首地址赋给p3。//申请一个存放整数的存储空间(没有名称),返回给指针p1。//申请一个存放整数的空间,初值为100。可以定义一个很大的结构体数组,但浪费存储空间。//释放由p3所指向的数组存储空间。:对输入的每一个同学的数据,

2024-03-13 20:20:38 433

原创 8.6用typedef声明一种新类型名

该语句把基本类型long long重新声明一个新的类型名“LL”,此后既可以用long long、也可以用L来定义整型变量。其中,“类型名”必须是基本类型,或者是在此语句之前已声明好的结构体类型,“标识符”是一个用户自定义标识符,用作新的类型名。注意:typedefi语句的作用仅仅是对已存在的类型声明一个新的“名字”,并未产生新的数据类型,而且。//等价于long long a, b;

2024-03-13 19:42:42 361

原创 8.5结构体变量及成员的引用

例如,假设已经定义好student结构体变量std1,则可以将它的值赋值给另一个student结构体变量std3。,其用法跟普通变量、指针变量做函数的用法类似。结构体变量中的成员如果是基本类型,那么。

2024-03-13 19:22:24 551

原创 8.4结构体变量、数组的初始化

初始化后,结构体变量std1各成员的存储情况如下图所示。因为结构体数组中各元素都是结构体变量,所以。和一般的变量、数组一样,

2024-03-13 19:03:44 452

原创 8.3结构体变量、指针、数组的定义

此处在声明student结构体类型的同时定义了结构体变量std1、结构体指针pstd和具有3个结构体元素的数组stds。④声明一个结构体类型的同时,使用typedef给结构体声明一个新的名称。声明好结构体以后,就可以像用int、char等基本数据类型一样去。例如:typedef student STR;,如同使用int、char一样。

2024-03-13 17:12:50 364

原创 8.2结构体类型的声明

例如,对于前面提及的“学生”结构体和“日期”结构体,其声明如下。其中struct是关键字,是结构体类型的标志;结构体名称和成员名都是用户自定义标识符。,包含哪些成员,这时。

2024-03-13 16:45:50 393

原创 8.1结构体概述

更进一步,如果有10个学生,每个学生都具有这3个数据,则可以用一个结构体数组来存储这10名学生的结构体数据。,分别是字符数组、整型和浮点型。这三个数据具有不同的类型但都属于同一个学生,因此可以把这3个数据。,都是整型,因此可以把这3个成员组。这3个数据称为“学生”结构体的。在C/C++语言中,

2024-03-13 16:32:57 361

原创 案例六:翻硬币

位置依次为x1,x2,且x1<x2,易知在第一个字符串中。,那么如果第一个串经过若干次翻转可以变成第二个串,则这。,因此t2>t1,所以第一种翻转方案更好。现在要求的是翻转次数最少的方案。,才能使得这2个字符串相同。,在字符串中的位置依次为。

2024-03-13 16:16:21 321

原创 案例五:人物相关性分析

对于每一个Alice,求和他同时出现的Bob的次数,设。在寻找每一个Alice和Bob出现的位置时,很容易想到的一种方法是,

2024-03-13 15:29:32 331

原创 案例四:单词分析

建立一个数组来分别存储各个字符出现的次数,最后求最大次数及对应的字符。

2024-03-13 13:07:56 351

原创 案例三:删除字符

正确的方法是:第1次删除数字7、第2次删除数字4,得到2319才是最小的。原因是:不管删除哪2个数字,剩下的数,位数是一样的,而位数相同的数在比较大小时,是从左边的最高位开始比较每一位数字越小,则这个数越小,因此在删除数字时,以第2个样例数据为例,输入的字符串为SUANFA,如果删除1个字符,应该删除哪个字符呢?应该删除U,得到的字符串为SANFA,是字典序最小的,U是当前字符串中第一个“如果再删除一个字符呢?应该删除S,得到的字符串为ANFA,是字典序最小的。重复n次,得到的就一定是字典序最小的字符串。

2024-03-13 12:49:06 361

原创 案例二:回文日期

比较两个字符串的大小、是否相等;用运算符“+”实现字符串的拼接。:将一个字符串转换成一个整数,例如,由"2023"得到2023。:将一个整数转换成一个字符串。

2024-03-13 12:08:20 323

原创 案例一:大写

可以用字符数组实现,也可以用string类实现。

2024-03-12 21:18:27 361

原创 7.7字符串类string

组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值(npos是一个常量,用来表示不存在的位置)string类也提供了丰富的函数以下列出一些常用的函数。②用getline函数读入string类型的字符串s时,C++语言也封装了字符串类string,功能非常强大。,这种输入方式是以回车换行表示输入结束。

2024-03-12 20:46:15 331

原创 7.6字符串处理函数

可以指定拷贝的字符数,需要使用strncpy函数。strncpy函数的原型为:char *strncpy(char *dest, const char *src, size_t n);:返回int型整数,若字符串s1<字符串s2,返回-1;若字符串s1==字符串s2,返回0。//拷贝后,s2中存储了"Hello",但后面没有串结束标记。返回值:返回拷贝后所得到的字符串的首地址,即第1个参数dest的值。:返回值就是参数dest所指向的存储空间的地址。:返回的就是参数dest所指向的存储空间的地址。

2024-03-12 20:13:51 751

原创 7.5字符指针变量

/(✘)通过字符指针变量修改字符串常量中的字符是非法的。c[0] = 'a';//(✔)修改字符数组元素的值是合法的。pc指向的就是这个字符串常量的第0个元素,通过这个字符指针变量就可以输出字符串常量中的每个字符。,实际上是把字符串常量的首地址赋值给字符指针变量。(*pc)='Z';//这条语句等效于c = 'Z';//字符指针变量指向字符型变量c。//pc的值为字符数组ch的。:使用字符指针变量输出字符串常量中的字符。

2024-03-12 19:24:16 830

原创 7.4字符数组

输出字符数组时,也不是只输出8个字符,而是输出10个字符,一直输出每个字符直到串结束标志'\0'为止;这是因为如果输入串的长度等于或大于数组长度,系统会把超出数组长度的字符存放在数组所占存储空间的后续字节里,而这些字节不属于数组范围,这是很危险的。与整型数组初始化类似的是,如果在初始化时所提供的初值个数小于数组长度,对于没有初值的元素,编译器自动赋值为0(注意,如下图所示,在输入字符数组时,输入10个字符'a',再加上串结束标志'\0',一共11个字符,其中前面8个字符'a'存在在字符数组a中,

2024-03-10 13:16:07 870

原创 7.3字符串常量

如右图所示,计算机在存储字符串常量时,将字符串常量存储在一段连续的存储空间中。每个字符占一个字节,存储的是字符的ASCII编码值,然后。"abc\\\n"包含了5个字符:'a'、'b'、'c'、'\\'和'\n',其中后两个字符就是转义字符,分别表示右斜杆和换行符;例如,在用下面的cout语句输出一个字符串常量时,只输出“Hello”,该字符串常量的存储情形如右图所示。"就是一个字符串常量,在输出时,对字符串常量,是把其中的字符原样输出来的。,这个字符用作字符串常量的结束标志。在输出字符串常量时,

2024-03-09 21:56:05 322

原创 7.2字符型数据

字符'A'的ASCII编码值为65,对应的二进制为01000001。如''、'#'、%'、'D'都是合法的字符型常量,在内存中占一个字节。除了以上形式的字符常量外,C/C++还允许使用一种特殊形式的字符型常量,就是以右斜杆“\”开头的字符序列,这些字符型常量称为。如果在程序里定义了一个字符型变量ch,它的值是大写字母字符'A',实际上并不是把该字符本身存放到内存单元中,而是。既然字符型数据是以ASC编码值存储的,它的存储形式就与整数的存储形式类似。//变量a的值为65,即字符'A'的ASCII编码值。

2024-03-09 21:43:04 785

原创 7.1ASCII编码

(American Standard Code for InformationInterchange,美国信息交换标准代码)编码,如下表所示。,是不可以显示的,必须用转义字符来表示。例如,'\n'表示换行字符。在读取时根据编码方案解释成正确的内容进行显示或播放。,b是98,以此类推。z的ASCII码是122。,B是66,以此类推。Z的ASCII码是90。,这些规律在编程解题时可能要用到。对应编码是0110000B(ASCII编码表具有以下。表1:ASCII编码表。

2024-03-09 20:30:47 351

空空如也

空空如也

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

TA关注的人

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