首页 > 其他 > 详细

笔试真题

时间:2020-04-26 21:57:37      阅读:73      评论:0      收藏:0      [点我收藏+]

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算法 ---- 动态规划

动态规划算法的基本步骤

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

笔试真题

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!