Advertisement

笔试题目——回文数组

阅读量:

针对一个给定的正整数序列a[],若其逆序后与原序列完全一致,则该序列被称为回文数组。现需输入一个正整数序列,并在其中插入若干数字,使其转化为回文数组,同时确保所有元素之和达到最小值。最终输出插入后的数组总和。例如:[1,2,3,1,2]通过添加两个1,可变为[1,2,1,3,1,2,1],其总和为11。

输入说明:

输入数据由两部分构成:第一部分为一个整数L,用于表示数组的长度;第二部分为具体的数组元素。

输出说明:

输出一个整数,代表经过插入操作后形成的正整数回文数组的总和。

示例输入:

8

51 23 52 97 97 76 23 51

示例输出:

598

更新代码:(动态规划)

复制代码
 import java.util.Scanner;

    
  
    
 /** * 回文数组
    
  * 一个数组,插入数字,使其成为回文数组,尽量使插入的数组和最小,输出和
    
  * * if a[i]==a[j]   f[i][j] = 2*a[i]+f[i+1][j-1]:i++,j--
    
  * if a[i]!=a[j]   f[i][j] = min(f[i+1][j]+2*a[i],f[i][j-1]+2*a[j])
    
  *					i++		j--
    
  */
    
  

全部评论 (0)

还没有任何评论哟~