網易程式設計題一,迴文序列(貪心法)
阿新 • • 發佈:2019-02-12
迴文序列(貪心法)
如果一個數字序列逆置之後跟原序列是一樣的就稱這樣的數字序列為迴文序列。例如:
{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
我的程式碼:
#include <iostream>
using namespace std;
int main()
{
int n, list[50], ans = 0, suml = 0, sumr = 0;
cin >> n;
for (int i = 0; i < n; i++)cin >> list[i];
int i = -1, j = n;
while (i<j)
{
if (suml == sumr)
{
i++, j--;
suml = list[i], sumr = list[j];
}
else if (suml < sumr)
{
i++, ans++;
suml += list[i];
}
else
{
j--, ans++;
sumr += list[j];
}
}
cout << ans;
return 0;
}