classSolution:def__init__(self)->None:passdefsolution(self, n, m):return n + m
if __name__ =="__main__":
n =int(input().strip())
m =int(input().strip())
sol = Solution()
result = sol.solution(n, m)print(result)
f
[
i
]
[
j
]
=
{
1
j
=
i
s
[
i
]
=
=
s
[
j
]
j
=
i
+
1
s
[
i
]
=
=
s
[
j
]
and
f
[
i
+
1
]
[
j
−
1
]
j
>
i
+
1
f[i][j] = \begin{cases} 1 & j = i \\ s[i] == s[j] & j = i + 1 \\ s[i] == s[j] \text{ and } f[i + 1][j - 1] & j > i + 1 \end{cases}
f[i][j]=⎩⎨⎧1s[i]==s[j]s[i]==s[j] and f[i+1][j−1]j=ij=i+1j>i+1
classSolution:def__init__(self)->None:passdefsolution(self, s):
n =len(s)
f =[[0]* n for i inrange(n)]
l = ans =0for i inrange(n):for j inrange(i):
f[j][i]=(s[i]== s[j])and(j == i -1or f[j +1][i -1])if f[j][i]and ans < i - j +1:
ans = i - j +1
l = j
f[i][i]=1return s[l:l + ans]if __name__ =="__main__":str=input().strip()
sol = Solution()
result = sol.solution(str)print(result)
classSolution:def__init__(self)->None:passdefsolution(self, n, arr):returnmin(arr)if __name__ =="__main__":
n =int(input().strip())
arr =[int(item)for item ininput().strip().split()]
sol = Solution()
result = sol.solution(n, arr)print(result)
4. 最大数
题目
给定任意一个数字 n,然后给出数字 m,则需在 n 中去掉 m 位数,保持各位顺序不变的情况下,得到最大数。
解题报告
模拟,显然答案长度为 s = len(n) - m,遍历答案每一位数 a[i], 0 <= i < s
a[i] = max{n[j]}, k < j <= m + i,k 为上一位数在 n 中的位置,初始时 k = -1
最后输出 a 即可
classSolution:def__init__(self)->None:passdefsolution(self, n, m):
m =int(m)
s =len(n)- m
k =0
a =['0']* s
for i inrange(s):for j inrange(k, m + i +1):if a[i]< n[j]:
a[i]= n[j]
k = j +1return''.join(a)if __name__ =="__main__":
n, m =[item for item ininput().strip().split()]
sol = Solution()
result = sol.solution(n, m)print(result)