码迷,mamicode.com
首页 > 其他好文 > 详细

笔试真题

时间:2020-04-26 21:12:30      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:print   字符串   自底向上   回文串   输出   单源最短路径   删除   动态规划   kmp算法   

1.构造回文

题目:

给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。

思路:利用回文的性质,利用动态规划求原字符串和其反串的最大公共子序列。


2.筛选法求素数

N = int(input())

NList = [i for i in range(2,N+1)]
PrimeList = []

for i, num in enumerate(NList):
    if num == 0:
        continue
    for j in range(i+1, len(NList)):
        if NList[j]==0:
            continue
        elif NList[j]%NList[i]==0:
            NList[j] = 0
for i in NList:
    if i != 0:
        PrimeList.append(i)

print(PrimeList)

算法举例

  • 单源最短路径中的Dijkstra算法 ---- 贪婪算法
  • 最小生成树的Prim算法 ---- 贪婪算法
  • 最小生成树的Kruskal算法 ---- 贪婪算法
  • 计算每对顶点最短路径的Floyd-Warshall算法 ---- 动态规划
  • 字符串匹配中的KMP算法 ---- 动态规划

动态规划算法的基本步骤

  • 根据计算最优值得到的信息,构造最优解
  • 递归的定义最优解
  • 找出最优解的性质,并刻画其结构特征
  • 自底向上的方式填表计算出最优值

笔试真题

标签:print   字符串   自底向上   回文串   输出   单源最短路径   删除   动态规划   kmp算法   

原文地址:https://www.cnblogs.com/JetBlock/p/12361338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!