如果乙個數字序列逆置之後跟原序列是一樣的就稱這樣的數字串行為回文序列。例如:
, , 是回文序列,
, , 不是回文序列。
現在給出乙個數字序列,允許使用一種轉換操作:
選擇任意兩個相鄰的數,然後從序列移除這兩個數,並用這兩個數字的和插入到這兩個數之前的位置(只插入乙個和)。
現在對於所給序列要求出最少需要多少次操作可以將其變成回文序列。
輸入描述:
輸入為兩行,第一行為序列長度n ( 1 ≤ n ≤ 50) 第二行為序列中的n個整數item[i] (1 ≤ iteam[i] ≤ 1000),以空格分隔。
輸出描述:
輸出乙個數,表示最少需要的轉換次數
示例1
輸入4 1 1 1 3
輸出**:
//利用遞迴,兩端不論怎樣都要相等或者最終合成為同乙個數
#include
using
namespace
std;
int comb(int* nums, int head, int tail)
if (head >= tail) return times;
else
return times += comb(nums, ++head, --tail);
}int main();
cin >> n;
for( int i = 0; i < n; i++)
cin >> nums[i];
cout
<< comb(nums, 0, n-1);
}
演算法題 回文序列
網易2017秋招程式設計題 如果乙個數字序列逆置之後跟原序列是一樣的就稱這樣的數字串行為回文序列。例如 是回文序列,不是回文序列。現在給出乙個數字序列,允許使用一種轉換操作 選擇任意兩個相鄰的數,然後從序列移除這兩個數,並用這兩個數字的和插入到這兩個數之前的位置 只插入乙個和 現在對於所給序列要求出...
程式設計題 構造回文
給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda goo...
程式設計題 構造回文
內容會持續更新,有錯誤的地方歡迎指正,謝謝 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000 輸出描述 對於每組資料,輸出乙個整數,代表最少需要...