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),以空格分隔。

    输出描述:

    输出一个数,表示最少需要的转换次数
    示例1

    输入

    4 1 1 1 3

    输出


      2

    分析:

    回文从两端看一一对应相等,所以从两端开始比较,有不相同的就将小者相邻元素相加。

    用两个指针,分别指向开头和结尾,如果有前面的小,则将前面的元素和它后一个元素相加放到它后一个元素的位置,然后前指针后移一个继续判断。
    如果后面元素大,则将后面元素和它前面一个元素相加放到它前面元素的位置。一直下去,到最后只有一个元素(是回文)位置。

    
    
    import java.util.*;
    public class Main{
        /*
            用两个指针,分别指向开头和结尾,如果有前面的小,则将前面的元素和它后一个元素相加放到它后一个元素的位置,然后前指针后移一个继续判断。
            如果后面元素大,则将后面元素和它前面一个元素相加放到它前面元素的位置。一直下去,到最后只有一个元素(是回文)位置。
        */
        public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                int n=sc.nextInt();
                int[] num=new int[n];
                for(int i=0;i<n;i++){
                    num[i]=sc.nextInt();
                }
                int count=0;
                int start=0,end=n-1;
                while(start<end){
                    if(num[start]<num[end]){
                        num[start+1]=num[start]+num[start+1];
                        start++;
                        count++;
                    }else if(num[start]>num[end]){
                        num[end-1]=num[end]+num[end-1];
                        end--;
                        count++;
                    }else{
                        start++;
                        end--;
                    }
                }
                System.out.println(count);
            }
        }
    }
  • 相关阅读:
    option 变为不可选
    html表格 横跨多行跨多列
    ultraEdit 关键字颜色 与 字体模糊 解决办法
    更改U盘 硬盘背景
    js 函数带值。调用
    Blitz: a collection of software designed to support a universitylevel course on Operating Systems
    不错的Qt入门
    Linux命令行技巧zz
    rvalue_references
    http://channel9.msdn.com/
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8276688.html
Copyright © 2011-2022 走看看