题解系列018 + 比赛系列007 | CSDN 第二十二届编程竞赛题解 + 建议

一、总体情况

得分:25+25+25+25=100(排名第9)

在这里插入图片描述

二、题目分析

第一题: C++难题——大数加法

题目

在这里插入图片描述

分析

本人用的 python, 所以与我无关, 正常来说模拟小学的竖式加法即可, 详解可以看洛谷上的这道题. 当然 python 一行就能搞定:

解答
class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, n, m):
		result = None
		result = m+n
		return result
if __name__ == "__main__":
	n = int(input().strip())
	m = int(input().strip())
	sol = Solution()
	result = sol.solution(n, m)
	print(result)

第二题: 最长回文串

题目

在这里插入图片描述

分析

先写个经典的回文数检验:

def is_pal(s):
    l = len(s)
    for i in range(l):
        if s[i]!=s[l-1-i]:
            return False
    return True

然后从头到尾暴力检验即可.

代码
def is_pal(s):
    l = len(s)
    for i in range(l):
        if s[i]!=s[l-1-i]:
            return False
    return True

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, s):
        l = len(s)
        maxi = -1
        strip = []
        for j in range(l-1, -1, -1):
            for i in range(j, -1, -1):
                
                if is_pal(s[i:j+1]):
                    if(len(s[i:j+1])>=maxi):
                        strip = s[i:j+1]
                        maxi = len(strip)

        return strip

if __name__ == "__main__":
    str = input().strip()
    sol = Solution()
    result = sol.solution(str)
    print(result)

第三题: 求最小元素

题目

在这里插入图片描述

分析

本题是不是出错了? 理论上要限定 “不能用内置 min 函数” 之类的才可能有意义.

代码
class Solution:
	def __init__(self) -> None:
		pass
	def solution(self, n, arr):
		result = None
		result = min(arr)
		return result
if __name__ == "__main__":
	n = int(input().strip())
	arr = [int(item) for item in input().strip().split()]
	sol = Solution()
	result = sol.solution(n, arr)
	print(result)

第四题: 最大数

题目

在这里插入图片描述

分析

这题的关键点在于注意到贪心技巧的合理性: 即 “没有回头路可走”. 因此前 m + 1 m+1 m+1 位中我们不得不挑一个最大的数, 把余量扣掉. 这个思路和已有的一篇题解几乎雷同, 代码也大致相似, 为了避免抄袭嫌疑就贴上了: 传送门.


欢迎关注我的博客!
Find me on GitHub: GitHub profile page
Gitee account (under construction): Gitee site
GitLab account (under construction): GitLab site
Also find me on Luogu:Luogu profile
欢迎大家关注我,在项目上与我协作哦!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值