1. 程式人生 > >牛客網線上程式設計(18):迴文序列-python

牛客網線上程式設計(18):迴文序列-python

題目描述

如果一個數字序列逆置之後跟原序列是一樣的就稱這樣的數字序列為迴文序列。例如:
{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

程式碼實現 

n=input()
lis=list(map(int,input().split()))

result=0
start=0
while True:
    if lis==list(reversed(lis)):
        print(result)
        break
    else:
        result+=1
        for i in range(start,len(lis)//2):
            if lis[i]>lis[-i-1]:
                lis[-i-2]+=lis[-i-1]
                lis.pop(-i-1)
                start=i
                break
            elif lis[i]<lis[-i-1]:
                lis[i]+=lis[i+1]
                lis.pop(i+1)
                start=i
                break