zoukankan      html  css  js  c++  java
  • 每日编程系列——回文序列

    一、题目:
    如果一个字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:

    {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),以空格分隔。
    输出描述:
    输出一个数,表示最少需要的转换次数
    输入例子:
    4
    1 1 1 3
    输出例子:
    2
    二、答案解析
    回文序列的特点就是以中心为轴,首尾相同,如图:
    既然如此,只要我们保障首尾相同即可,题中要求求出最少的操作次数,因此我们可以只遍历序列的一半,即以“头部的下标小于尾部的下标
    为循环条件,同时序列的头尾哪边小,则操作哪一边,减少操作次数,小编算法以数组为介质,进行运算,如下:


     
  • 相关阅读:
    对Java课程的感想
    OO第二阶段总结
    OO第一作业周期(前四周)总结
    实验7 流类库和输入输出
    实验6 类的继承和多态
    实验5 类和对象3
    实验4 类与对象2
    实验3 类和对象
    实验2
    实验1
  • 原文地址:https://www.cnblogs.com/coderls/p/6429919.html
Copyright © 2011-2022 走看看