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

    import java.util.Scanner;
    public class Main{
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            while(scanner.hasNext()){
                int n = scanner.nextInt();
                int[] data = new int[n];
                int count = 0;
                for(int k=0;k<n;k++){
                    data[k] = scanner.nextInt();
                }
    
                int i = 0;
                int j = n-1;
                while(i<j){
                    if(data[i] == data[j]){
                        ++i;
                        --j;
                    }
                    else if(data[i] < data[j]){
                        data[i+1] += data[i];
                        ++i;
                        ++count;
                    }
                    else if(data[j] < data[i]){
                        data[j-1] +=  data[j];
                        --j;
                        ++count;
                    }
                }
                System.out.println(count);
            }
        }
    }
  • 相关阅读:
    Ruby入门——简介&基本概述
    Ruby入门——数组
    测试之路——现阶段&下一阶段
    Ruby入门——环境准备
    Ruby入门——哈希表
    Linux常用命令<按字母排序...>之D,E,F
    多态界面的子控件控制
    随笔
    多态界面的数据显示
    app开发快速理解——webview网页显示
  • 原文地址:https://www.cnblogs.com/yldf/p/11900131.html
Copyright © 2011-2022 走看看