CSDN编程竞赛报名地址
小y近期也很少参加CSDN组织的竞赛,即使报名了也很少有完整的做完,毕竟小y的编程水平也不是专业的,但也有努力在学习进步。
仔细看了一下之前发的文章,上次参加比赛获奖还是第一次参加CSDN竞赛的文章,那个时候还是第六期,转眼间已经举办到第52期了,时间隔得还挺久的,和第一次比赛相比,经过大半年练习的我感觉在程序设计方面长进了很多,下面浅浅总结一下这次比赛吧。
题目1:投篮
小明投篮,罚球线投球可得一分,在三分线内投篮得分可以得到2分,在三分线以外的地方投篮得分可以得到3分,连续投进得分累计,一旦有一个球没投进则得分清零,重新计算。现给出所有得分记录(清零不计入得分),请你计算一下小明最多连续投进多少个球?
解题思路:求最长单调递增子序列的长度即可。
题目2:买苹果
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。
解题思路:每次循环看苹果树能否整除6或者8,如果能,就-6或者-8。
题目3:打家劫舍
一个小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
解题思路:动态规划,状态转移方程:
d p [ i ] = m a x ( d p [ i − 2 ] + a [ i ] , d p [ i − 1 ] ) dp[i]=max(dp[i-2]+a[i],dp[i-1]) dp[i]=max(dp[i−2]+a[i],dp[i−1])
题目四:天然气订单
天然气运输成本昂贵,危险性高,为了节省运输成本,提倡绿色环保,需要尽可能的优化订单配送,比如相同地区的天然气订单可以一次性配送。 现需要向多个地区运输天然气。但是同一个地区可能有多个订单需求。当前仅只知道某些成对的订单是同一个地区的,同一个地区的天然气需要尽可能一次性配送从而降低运输成本,所以需要尽可能的将同一个地区的订单放在一起。订单的编号是1到n。
解题思路:实现一个图的遍历和连通块的查找,目的是将相同地区的订单放在一起,从而降低天然气的运输成本。
程序设计考察的不仅仅是个人的编码水平,更多的是思维理解与构思能力,小y也会继续努力学习的!!!