一、总体情况
得分: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 位中我们不得不挑一个最大的数, 把余量扣掉. 这个思路和已有的一篇题解几乎雷同, 代码也大致相似, 为了避免抄袭嫌疑就贴上了: 传送门.