C语言题目讲解
对应牛客网,力克,或者平时遇到的题目的分析讲解
玖剹
这个作者很懒,什么都没留下…
展开
-
BC134 蛇形矩阵
首先,这道题我们要根据这个示例,找到蛇形矩阵是怎么移动的这是,我们可以标记一下每次移动到方向我们根据上图可以看出,蛇形矩阵一共有两种方向,橙色的是斜向右上角,蓝色的是斜向左上角,根据这个图的最后一个的点(16),我们可以先补出一个红色三角形,再根据这个三角形,可以补充为一个矩形。而这个三角形中,经过最后一个数据16的是第七行,所以循环时最后的条件是小于等于7(2*n-1)原创 2024-03-09 21:05:15 · 284 阅读 · 0 评论 -
BC114 圣诞树
看n==3的时候,可以找到一些规律。原创 2024-03-09 18:16:52 · 136 阅读 · 0 评论 -
BC161 大吉大利,今晚吃鸡
【代码】BC161 大吉大利,今晚吃鸡。原创 2024-03-09 16:02:55 · 208 阅读 · 0 评论 -
汉诺塔问题(C语言)
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。原创 2024-03-06 18:36:46 · 459 阅读 · 0 评论 -
WY49 数对
1.首先,很容易想到的就是两个循环遍历,但是提交时第一个数据就是十分大,时间不允许2.这时,我们就不得不换一种思路,题目中有一个标签:基础数学,也就是这个题可以找数学规律。原创 2024-02-28 15:55:06 · 140 阅读 · 0 评论 -
面试题 16.15. 珠玑妙算
1.首先malloc开辟的数组,将其中的元素的值为零,方便之后的统计次数2.先统计猜中的,当猜中时,solution[i]==guess[i]时,为让防止之后统计之后伪猜中时重复的,要将值改变,为了避免和以已有值重复,就+ - 一就可以了,而且为了避免找伪猜中时有重复,这两个数组的变化不能一样,不然就会重复,所以一个加一,一个减一。原创 2024-02-27 23:39:29 · 229 阅读 · 0 评论 -
C语言题目讲解
先设定两个变量,一个变量(ret_e)用来存连续的1的个数,当nums[i]为0时,该变量就置为0,当nums【i】为1时,再重新++;再设另一个变量(ret),作为返回值,当ret-e++时,如果ret<ret_e就把ret_e里面的值赋给ret这样最后ret存的就是最大的连续的值。原创 2024-02-27 23:05:26 · 305 阅读 · 0 评论 -
力扣238和169
【代码】力扣238和169。原创 2024-02-20 21:30:15 · 428 阅读 · 0 评论 -
JZ65 不用加减乘除做加法(&,^)
【代码】JZ65 不用加减乘除做加法(&,^)原创 2024-02-20 21:19:36 · 230 阅读 · 0 评论 -
P5742 【深基7.例11】评等级
1.这道题如果直接定义一个结构体数组,数组大小太大,会导致堆溢出2.再细看题目的要求,要求我们写一个参数为结构体的函数3.如果直接写会导致堆溢出,我们可以用calloc在栈区开辟一块结构体大小的空间。原创 2023-12-29 11:59:26 · 434 阅读 · 1 评论 -
P5740最厉害的学生
这道题就是会使用C语言的结构体,然后知道结构体数组。原创 2023-12-25 17:31:08 · 411 阅读 · 0 评论 -
P3741honoka的键盘
1.这道题的关键是读懂题目,代码并不难,重点关注题目的这句话2.题目中所以后面的那句话,我们可以提取出两个信息:2.1.只有V和K相邻时才认为出现了VK,KV不可以2.2她可以改变一个字符,使VK出现的次数最多,我们可以改变的是:VV和KK3.代码设计:3.1先循环一遍,找出VK出现的次数3.2再将找到的VK换成其他字符,避免对下一次找VV和KK形成干扰3.3再循环一次找有咩有KK或者VV,有就将它们改成VK,记住只能改一次,改完就跳出循环。原创 2023-12-25 16:22:45 · 433 阅读 · 0 评论 -
P1957口算练习
1.因为这个题不确定是输入一个数据还是两个数据,如果根据数据类型分别输入数据,不容易计算,这是可以将输入的数据当作一个字符串,然后在判断首字符是不是字母即可2.用isalpha判断是不是字母,如果是字母,之后就在输入两个整形变量,如果不是字母,就用atoi将字符串的数字转换为数字,然后再输入一个数字3.怎么求字符串长度?我们可以用sprintf函数这个函数是不是很像printf,他的功能就是将一个数据转换成字符串,再用strlen求字符串的长度即可。原创 2023-12-25 15:35:52 · 372 阅读 · 0 评论 -
2047过滤空格(C语言)
4.代码设计:将scanf作为while循环的条件,每次循环截至就意味着读完了空格前的字符串,就打印字符串和一个空格,这样就实现了过滤空格。1.首先,这道题是一个字符串的问题,我们要先知道字符串存放在char类型的数组中的,并不是一个变量就可直接存放的下一个完整的字符串。,他在读取字符串时有一个特点,它一次性;只能读取空格前的字符串,遇到空格就停止录入,即使空格后面还有字母。2.这个题目,让我们过滤掉连续的空格,然后只留下一个空格。3.这是就又要我们判断什么时候是空格?这是不得不提及一个常用的。原创 2023-12-25 09:42:42 · 539 阅读 · 0 评论 -
1161转进制(C语言)
1.首先该题目让我们使用递归求十进制转其他进制2.其次,我们要知道十进制转换为其他进制怎么转换,以例题所给的数据为例由此图可以看出,十进制转换为其他进制,是辗转相除法,即这个数一直除以要转换的进制数,一直到商为零,然后逆序输出所有余数3.用递归图表示为4.分析到这里大致的代码已经有雏形了,还有一个问题是,在余数在1~9时,直接输出就可以,但是余数是10~15时,不可以直接输出,要转换为A~F,怎么转换呢?原创 2023-12-23 22:11:59 · 625 阅读 · 0 评论 -
1162字符串逆序
1.如果不用递归,可以输入字符串后,再逆序输出,但是题目要求使用递归2.使用递归:2.1输入字符,直到输入的字符是‘!’,停止输入,否则继续输入(递归,而‘!’就是递归停止的条件)2.2然后逆序输出所输入的字符(递推)3.递归图示。原创 2023-12-23 22:39:46 · 593 阅读 · 0 评论 -
2045蛇形填数(C语言)
1.大体的思路就是找到蛇形矩阵的循环规律,然后填数常见的遍历方式:按行遍历,按列遍历,然后就是蛇形遍历2.蛇形矩阵分析3.由此可见这四条线路每一个都是一个小循环,这四条线路又构成一个大循环,大循环的条件就是n*n。原创 2023-12-16 21:41:21 · 409 阅读 · 0 评论 -
2036开关门,1109开关门
1.每次都是房间号是服务员的倍数的时候做处理,所以外层(i)枚举服务员1~n,内层(j)枚举房间号1~n,当j % i=0时,做处理2.这个处理指的是,开门的时候变成关门,关门的时候开门,所以可以用取反运算符=!原创 2023-12-14 22:20:50 · 612 阅读 · 0 评论 -
2044回文字符串(C语言)
最简单的理解方式就是一个字符串正着写和倒着写一样。原创 2023-12-16 19:19:23 · 410 阅读 · 0 评论 -
2043杨辉三角(C语言)
这时,不妨看一下我对杨辉三角第一行和第二行的理解,将它们理解为第一行的两边还有一个未显示的0,第二行的1是由第一行的1+0得到的,同理假设我们求的是五行杨辉三角,那么第二行的1是由第一行的1和它右边的0相加得到的,但是如果求五行,我们创建的是5*5的二维数组的话,第一行的1是第一行开始的数,如果访问它右边的数就越界了,所以这是不妨。2.但是当我们的输出结果,与杨辉三角的形式有所不同,但是我们可以找到与杨辉三角相似的规律,即一个数等于上面的数和上面数的右边的的数的和(我们只是找到了规律,但是如何应用规律呢?原创 2023-12-16 18:45:54 · 494 阅读 · 0 评论 -
1125矩阵乘法(C语言)
1.对于学习过线性代数的人来说,对应公式十分熟悉,而对于没接触过线性代数的人来说,我们地一步要做的是从题目所给的公式中找规律2.这个题目,给了我们三个变量n,m,k,我们我看清它们分别表示那个矩阵的行和列。原创 2023-12-16 17:33:33 · 850 阅读 · 0 评论 -
1128:图像模糊处理(C语言)
1:输入图像2.根据题目描述1,得出图像四周的数是不变的,即i =1,i=n,j=1,j=m时,图像所表示的数值不变3根据题目描述2可得,中间的值为四周及其本身的平均值,所以首先求的是五个数的平均值,其次这个平均值如果是小数的话,要四舍五入,重点就是如何四舍五入。原创 2023-12-16 16:50:31 · 768 阅读 · 0 评论 -
1107校门外的树(C语言)
如果按上图所画,思路其实很简单,用原本种树的长度减去铁路的长度,但是题目所给的是所修铁路可能有重叠的部分。,用0表示种树,1表示要修铁路的部分,这样就算是重复的部分,也就是两次置为1,不影响结果,最后数零的个数。如果再用长度减,就有重复减去的部分,这是这个数学模型貌似用代码很难敲出。时,我们曾用0表示未出列的人,1表示出列的人。这个题,我们可以用相同的。原创 2023-12-14 14:55:46 · 739 阅读 · 0 评论 -
2037约瑟夫问题(C语言)
2.我们要区分报数的人是不是具有报数的能力,即他之前没有报到过m,所以我们可以通过数组的值区分这个人是否可以报数,默认初始值是零,均可以报数,当一个人报到m是,将里面的值置为1,并将下标打印出来。1.输出结果是按编号输出,所以要考虑数组,数组里面存的数是有编号的,所以把n个人放到数组中,让他们的编号也是1~n,数组大小未知,有提示的数据范围可将数组设计在大于1000的范围。3.结束的标志是,n =0,所以每打印一个下标n--,知道n=0,程序结束。原创 2023-12-14 14:23:14 · 680 阅读 · 0 评论 -
一本通1083:计算星期几
【代码】一本通1083:计算星期几。原创 2023-11-30 12:31:53 · 544 阅读 · 1 评论