每日编程系列——回文序列
2017-02-22 17:17
211 查看
一、题目:
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1,2,1},{15,78,78,15},{112}是回文序列,
{1,2,2},{15,78,87,51},{112,2,11}不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
输入描述:
[b]输出描述:[/b]
[b]输入例子:[/b]
[b]输出例子:[/b]
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1,2,1},{15,78,78,15},{112}是回文序列,
{1,2,2},{15,78,87,51},{112,2,11}不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
输入描述:
输入为两行,第一行为序列长度n(1≤n≤50) 第二行为序列中的n个整数item[i](1≤iteam[i]≤1000),以空格分隔。
[b]输出描述:[/b]
输出一个数,表示最少需要的转换次数
[b]输入例子:[/b]
4 1113
[b]输出例子:[/b]
2 二、答案解析
回文序列的特点就是以中心为轴,首尾相同,如图:既然如此,只要我们保障首尾相同即可,题中要求求出最少的操作次数,因此我们可以只遍历序列的一半,即以“头部的下标小于尾部的下标”为循环条件,同时序列的头尾哪边小,则操作哪一边,减少操作次数,小编算法以数组为介质,进行运算,如下:
相关文章推荐
- 每日编程系列——硬币找零
- 网易2017秋招编程题----回文序列
- 编程之美资格赛——题目2 : 回文字符序列
- 每日编程系列——暗黑的字符串
- 编程系列之:最长回文子串问题
- 实战编程-回文序列
- 回文序列--网易2017秋招模拟考编程题1
- 每日编程系列——数字翻转
- HDU 4521 2013腾讯编程马拉松初赛第四场 小明系列问题——小明序列(dp思想+线段树优化)
- 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
- 每日编程系列——跳石板
- 每日编程系列——洗牌
- 每日编程系列———计算糖果
- 【编程之美】题目2 : 回文字符序列
- 每日编程系列——优雅的点
- 每日编程系列———买苹果
- Java在线笔试编程(3)---计算回文序列
- 2015编程之美 回文字符序列(区间Dp)
- 每日编程系列———最大奇约数
- 系列之五:最长公共子序列(LCS)问题(非连续子序列)的两种解法