回文数组(搜狐编程)--python
来源:互联网 发布:剑灵热巴数据 编辑:程序博客网 时间:2024/04/30 01:21
题目描述:有一个数组正序和倒序相同,则这个数组被称为‘回文数组’。现在给定一个数组,要求对其进行插入数字,使其称为回文数组,求所有能实现方案中,使得最后回文数组和最小的方案,输出最终回文数组的和。
思路:求最大回文串,即求一个数组正序与倒序的最大公共串,并用一个二维数组dp进行记录和。注意判定条件,当s1[i]==s2[j]时,dp[i][j]=dp[i-1][j-1]+s1[i];否则dp[i][j]=max(dp[i-1][j],dp[i][j-1]),这两个判定将所有回文串的可能性都考虑进去了,那么最大回文串的和就是dp[-1][-1],那么结果就是2*sum(s1)-dp[-1][-1]
代码实现:
#-*-coding:utf-8-*-while True: try: n=int(raw_input()) s=map(int,raw_input().split()) s1=s[::-1] dp=[[0 for i in range(n+1)] for j in range(n+1)] for i in range(1,n+1): for j in range(1,n+1): if s[i-1]==s1[j-1]: dp[i][j]=dp[i-1][j-1]+s[i-1] else: dp[i][j]=max(dp[i-1][j],dp[i][j-1]) ans=2*sum(s)-dp[n][n] print ans except: break
阅读全文
1 1
- 回文数组(搜狐编程)--python
- 2018秋招 搜狐 回文数组
- 插入最少数字构成数组回文(搜狐2017笔试)?待解决
- python爬虫搜狐新闻
- 回文数组
- 搜狐邮箱的Python经验
- 搜狐2017笔试编程题
- 彩色宝石项链-搜狐编程
- [python]回文
- python回文
- 网易2017秋招编程题:回文序列 [python]
- 腾讯2017暑期实习生编程题:构造回文 [python]
- python 回文字符串 回文数字
- 笔试题-搜狐手机网Python开发工程师
- python爬去搜狐论坛笔记
- 搜狐2017秋招编程题
- 搜狐2016研发工程师编程试题
- 搜狐2017校招编程题
- 数组中每个元素都出现了两次,但是其中一个元素只出现了一次,求出此元素
- Java_4
- LeetCode 56. Merge Intervals
- Web基础面试题
- 浅谈矿池协议
- 回文数组(搜狐编程)--python
- 基于javascript的简易计算器
- Python爬虫利器一之Requests库的用法
- 关于linuxCast的遗憾。。。。:(
- 算法5 种花
- 记录几个前端笔/面试中常遇到的算法
- Mybatis主配置文件
- 织梦5.7系统dede:likearticle全站内容关联
- 山东物联网蓝盾杯网络空间攻防赛赛后总结