转眼间ACGO欢乐赛就到31次了,不知道以后有多少次呢?
蒟蒻第一次写题解,有更优解欢迎吐槽~
这次欢乐赛比较简单,我也趁此写写题解。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正文
> T1
思路:
相信这道题目大家都会做。题目要求我们从aaa,bbb,ccc当中选2个数,并将它们相减,使得差最大。明显可以将最大数与最小数相减即可。
这里我的代码直接用sort排序。懒得写if了🙂
AC CODE
本题考察比较等语法。
> T2
思路:
这道题目要求我们输出数组距离的长度,并告诉我们数组距离定义为:数组中任意两个元素的差的绝对值。并让我们求该数组最大的数组距离。
理解了本题的思路,我们就容易思考如何解题了。既然是输出数组里两数差的最大绝对值,那么我们就可以想到,要使绝对值最大,直接将最大数与最小数相减即可。😄
AC CODE
本题考察比较等语法。
> T3
思路:
T3是一道有关字符拼接的语法题目,题目输入s1和s2两个字符串,并输出新的字符串,告诉我们新的字符串是这样构成的:
s1[0]+s2[0]+s1[1]+s2[2]+s1[2]+s2[2]+...+s1[n]+s2[n]s1[0]+s2[0]+s1[1]+s2[2]+s1[2]+s2[2]+...+s1[n]+s2[n]s1[0]+s2[0]+s1[1]+s2[2]+s1[2]+s2[2]+...+s1[n]+s2[n]
由此可见是由s1和s2的每个字符依次拼接成。
我们可以这样写代码:定义1个char数组s3,定义1个idx索引变量,通过for循环n次,将s1[i]s1[i]s1[i]和s2[i]s2[i]s2[i]拼接在新s3里。记得s1拼接后,使idx++,s2同理。😁
AC CODE
本题考察字符串等语法。
> T4
思路:
该题目总的意思就是要我们用两个变量依次自增目前数组最大的数,并除去这个数。
如何找到最大的数?明显可以通过排序解决。
我们首先将输入的数组排序,如果用sort不写cmp函数,那么我们就从小到大排序,并用for循环从大到小依次枚举数组里每个数,因为通过排序,我们能保证每次遍历到的数都是数组[i~0]中最大的那个,然后我们就可以通过定义一个bool函数flag,实现sum1和sum2的依次自增。由于sum1是第一个增加的,所以最后直接输出sum1与sum2的差即可。✌
AC CODE
本题考察数组等语法。
> T5
思路:
T5是一道类似模拟法的题目,我们可以通过题目给出的样例进行模拟并尝试找相同数值,同时观察for循环的i和j的变化,从而发现规律。
以下是模拟过程:
注:ATA^TAT改为T,A改为A
我们可以马上发现,其实将a数组反转就是将i和j进行相互换位,但是也要注意循环范围哦~😘
AC CODE
考察模拟、数组等语法
> T6
思路:
该题目要求我们在一个数组里找到k个数字,并将最大值与最小值相减,使得差最小并输出。
明显要使差最小,我们可以不断比较k个数字的差,如果比min小,那么就更新min的值,以此来类推。
我们可以先将数组从小到大排序,方便找到最优解,然后定义min函数设为无穷大,for循环从0到n-k,并定义临时变量m储存当前差,再与min比较,最后输出min。😉
AC CODE
考察模拟、数组等语法
完结
喜欢的小伙伴们,请奉上一个赞以此来回应作者你们对本帖子的评价吧~😊👍🎉🎉🎉
此贴原著:北辞 --- ACGOID:3310550
禁止抄袭本帖,违者必究~