- 博客(17)
- 收藏
- 关注
原创 快速排序(单趟排序算法,递归和非递归实现)
假设一维数组a, 假设一维数组a, 对其区间 [begin,end] 排升序,选择 a[begin] 为 key,begin位置形成坑,end 找比 key 小的值,begin找比 key 大的值。假设一维数组a, 对其区间 [begin,end] 排升序,选择 a[begin] 为 key,end 找比 key 小的值,begin找比 key 大的值,然后 a[begin] 和 a[end] 交换;对左右区间进行快速排序(即递归调用),终止条件:区间长度为1,或区间不存在,即 left>=right。
2024-06-08 17:40:47
250
原创 结构体的概念
4.嵌套结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的大小就是所以最大对齐数的整数倍。原因在于,为了访问未对齐的内存处理器需要作两次内存访问,而对齐的内存访问仅需一次访问,用空间换时间。结构的每个成员可以是不同类型的变量。注:结构体总大小达不到最大对齐数的整数倍,会开辟内存直至到达最大对齐数整数倍。3.结构体总大小为最大对齐数(所有成员变量的对齐数最大值)的整数倍。对齐数=min{默认对齐数,成员的大小}(单位:byte)此为,在创建结构体时同时创建一个变量p1,并初始化。
2024-04-08 23:33:33
262
1
原创 八皇后问题(*)
在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。例如:现在我们把棋盘扩展到 n×n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两个字符之间空一格)。
2023-12-27 23:16:00
501
1
原创 leetcode_环形链表
Q:为什么是 n*C 而不是 C?A:因为 C 和 L 的长度未知。如果 L 比 C 大很多的话,可能 slow 在走到路口点时,fast在环内就转了很多圈了。Q: 为什么slow连一圈都没走完就被追上了?A: 因为 fast 的速度是 slow 的两倍,匀速且经过相同时间下,fast 路程是 slow 的两倍。极端情况如图所示:假设slow进环时,slow 无限逼近于 fast,极限为 fast 和 slow 相对距离为C,相对速度为1,可算出时间为 C,即 slow 极限走1圈,fast走2圈。
2023-12-07 20:41:50
855
原创 PTA 习题8-4 报数(约瑟夫环问题——数组实现)
其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上的人是第out[i-1]个退出的。
2023-11-22 16:35:23
680
1
原创 PTA 习题7-5 找鞍点(最全解---考虑多个鞍点,每一行最大值元素有多个)
习题7-5 找鞍点一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。
2023-11-19 16:48:39
937
原创 模拟实现通讯录
解决思路:排序是根据peo中name来进行排序的,但实际排序的是整个结构体peo,因此要传类型为peo的地址,对每个结构体排序,操作的大小是一个结构体的大小。3.定义人信息的结构体类型peo(typedef改名),定义含有peo类型的数组a,以及记录存放的人数count,将此结构体命名为contact。1.将通讯录的所有功能分别封装为函数,并将实现函数代码封装到:contact.c中,将函数的声明放到:contact.h中。模拟实现一个通讯录,功能有:增加,删除,查找,修改,排序,打印。
2023-11-18 18:00:21
140
3
原创 动态规划问题---最长公共子串
实验2-1 最长公共子串一个序列中去掉若干(也可以不去掉)元素剩下的部分称为其子序列。对于给定的序列X = ,称序列Z = 为X的一个子序列,仅当在X中存在一个递增序号序列,对所有的j(1,2,…,k)满足 xij= zj。例如,Z = 是X = 的一个子序列,X中相应的序号序列为 。
2023-11-18 17:37:44
360
1
原创 c语言打印菱形
count1变量用来界定中间的那一行,每次整体循环把count1赋为0,当count1出了内嵌的第一个for循环时为0,则说明已经打印到了顶格的那行,此时,进入条件,flag赋为0,保证count1之后始终为0,可以一直进入条件。此时,i-=2(作用:逻辑上使得i为i--), i变为3,i++变为4,打印第四行,以此类推,直到count2到i等于1时++,赋为1,通过条件return 0.思路:因为每行的‘*’数和空格数都与该行的行数有关,则可得出打印空格和‘*’的两层循环可以重复使用。
2023-11-02 01:24:06
47
原创 习题8-6 删除字符
其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
2023-10-31 23:33:41
490
1
原创 习题8-5 使用函数实现字符串部分复制
函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。
2023-10-31 22:02:28
438
1
原创 习题5-7 使用函数求余弦函数的近似值
其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。
2023-10-31 00:36:39
194
1
原创 扫雷游戏(初阶版)
特别注意:为了统计炸弹个数时更方便,将有用行扩充2行,有用列扩充2列,以便统计炸弹个数时可以直接遍历周围的8个元素,没有越界访问的情况发生。实现思路:创建两个相同类型的二维字符数组,一个用来存放雷的信息,另一个作为展示的界面。4.剩余的被字符覆盖的位置如果恰好全是炸弹,则视为游戏成功,展示雷的排布,退出游戏。定义两个常量ROWS和COLS,创建两个二维数组,初始化这两个数组为相应的内容。2.输入坐标恰好是雷的位置,游戏结束,把雷的排布展示出来。要求:游戏界面范围,方便得知坐标的提示。3.定义展示界面函数。
2023-10-25 02:04:08
31
1
原创 三子棋游戏(初阶版)
rand()函数返回一个范围为0到rand_MAX(包括0和rand_MAX)的伪随机整数(即数学范围[0,rand_MAX])。简而言之,即使用rand()函数需要设定一个种子值(seed),如果没有设定种子值,则rand()默认用1来设定。相同的种子值,rand()函数返回的随机整数序列是固定的,需要srand()的参数设定不同的种子值来确保得到不同的随机整数序列。rand()声明为,int rand(void),srand()声明为,void srand(unsigned int seed)。
2023-10-25 01:03:40
37
1
原创 习题5-4 使用函数求素数和
其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[mn]内所有素数的和。题目保证用户传入的参数m≤n。
2023-10-19 21:32:08
91
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人