c++练习
c++练习题
快请我吃麦当当
为成为优秀的程序员而努力!
展开
-
结构体与快速排序 附例题
快速排序是通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。分析:使用结构体,对生日进行快速排序,先比较年再比较月,最后比较日,如果都相同就比较编号。原创 2023-10-13 12:20:59 · 206 阅读 · 0 评论 -
贪心算法&例题讲解
例如:就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。从单价最低到单价最高的开始给数组赋值,a表示单价为p的牛奶的总量,注意不能直接v[p]=a因为可能会出现不同农民售卖的牛奶单价是相同的情况,遇到多个农民售卖单价相同的牛奶时直接累加就行。从单价小到单价大赋值,这样在购买时可以通过循环数组的到需要牛奶的数量,每一次购买的时候都是找最便宜的购买。计算采购足够数量的牛奶所需的最小花费。单独的一行包含单独的一个整数,表示 Marry 的牛奶制造公司拿到所需的牛奶所要的最小费用。原创 2023-09-24 00:46:56 · 112 阅读 · 1 评论 -
使用剪切函数与遍历解决n个字符串的相同前缀问题
思路:第一和第二个字符串用函数求得最大相同前缀后,将得到的前缀与下一字符串进行前缀匹配,即替换第一个字符串,将第二个字符串换成第三个,这里使用循环。所以定义一个等于第一个字符串的字符串,后面通过函数递归得到新字符串,最后得到答案即可。定义一个标志数,用来表示前多少位相同,不超过k(最短的那个),使用循环。最后使用剪切函数,把相同的字符串剪切出来。这样用于递归的函数制作好了。两个字符串,取最短的那个(使用min函数->方便求相同前缀)原创 2023-07-09 03:06:27 · 121 阅读 · 1 评论 -
解决字符串二进制求和进位问题
为了让字符串地位对应地位,我们可以先逆置字符串(reverse)函数。//两值相加加上进位取余2,为1时则计算结果为1,其余为0。//i小于a的大小必为0,相反,如果a[i]不是1就是0;两值相加加上进位取余2是最后的值,进位(逢2进1)所以下一个进位等于进位/2.//逢2进1,所以下一个计算单位的进位由上一计算结果除2得出。//若还剩进位,最后添加即可。在短的那个字符串前补0,后面与方法一类似。原创 2023-08-07 02:35:45 · 115 阅读 · 0 评论 -
解决数组内加法进制问题
进位:若当前位为9,加1后进位,前一位加1,本位归为0,若数组有多个9,全部9加1进位后都为0,直到第一个不为9的数加1.当要加1的数组没有9时,第一个不为9的数即为最后一位,也满足题意,当数组内全为9时,则创建新数组(1,0,0,0......0)大小为原数组加1.可见是将数组最后一位加1,但是注意当最后一位或最后前几位都是9时,加1要进位。原创 2023-08-07 17:12:03 · 71 阅读 · 0 评论 -
使用C++左移右移解决数字的补数问题
使用一个字符串存储整数num的二进制,使用reverse函数,调整字符串的顺序,再将里面的数字取反,最后求出答案即可。根据题目要求求补码,可以使用数字的二进制和同样位数的1组成的字符串异或求得。111可由100中的1再左移一位减去1求得,最后111和101异或求出答案。可先求出num二进制最高位的那个1;比如:对于5来说,是100;5的二进制101和111异或可求出5的补码为010;)后,转换为十进制表示,可以得到这个整数的补数。,再转回十进制表示得到补数。对整数的二进制表示取反(原创 2023-09-01 19:40:34 · 143 阅读 · 1 评论 -
每日一题:在可重复的几个区域上种树
如果左边的大于上一个右边的,那么可以直接算出上一组数据有多少棵树,因为后面的数据都是比前一个大的,然后更换成更大的数组再和下一个数组比较。2.先建立一个大小为l+1的数组,将这个数组全置为0,将要种树的地方置为1,剩下是0的地方就是要修路的地方。建立比较函数:因为种树的地方是一个范围,所以建立有一对数据的数组,并且按照第一个数的大小从大到小排序。1.将每个种树的范围进行比较,大范围的替换小的范围;将要种树的地方标记成1,注意两个循环不可以拆开。如果左边的小于右边的,就比较两个数组的右边。原创 2023-09-07 20:26:24 · 99 阅读 · 2 评论