時間限制:1s 記憶體限制:32mb
問題描述
回文串是乙個正讀和反讀都一樣的字串,比如level或者noon就是回文串。回文陣列也是如此,比如[100,200,100]或者[178,256,256,178]就是回文陣列,[1,2,3]和[100,200]不是回文陣列。
現在yyy有乙個陣列,他想僅僅通過合併操作將陣列轉換為回文陣列,
合併操作:將陣列中相鄰兩個的數合併為乙個數,合併後的數為合併前兩個數的和。例如[1,2,3]通過一次合併操作即可變成回文陣列[3,3]。
輸入描述
第一行乙個整數t(1≤t≤10)表示資料組數。
對於每組資料第一行乙個整數n(1≤n≤〖10〗^5),表示陣列的長度。
第二行n個整數a_1,a_2,…,a_n (1≤a_i≤10000)分別表示陣列中的每個數。
輸出描述
對於每組資料輸出一行:乙個整數表示最少的合併次數。
輸入樣例
1 3
1 2 3
輸出樣例
1 【題目鏈結】:
【題解】
用兩個指標,哪個指標指的數字小;則那個指標往中間的方向合併(相鄰的);
如果數字相同則兩個指標都往中間靠;
【完整**】
#include
#define rep1(i,a,b) for (int i = a;i <= b;i++)
using
namespace
std;
#define pb push_back;
long
long num[100005];
int main()
int l = 1,r = n;
while(1)
else
if(num[r]1] = num[r] + num[r-1];
r--;
ans++;
}else
if(l>=r) break;
}cout
0;}
東華OJ 一維陣列競賽 雙重回文數
日常zb 這oj確實看運氣的嗎,之前抽到的題一點思路都沒有,現在都輕輕鬆鬆 bushi 我自己分解為 1.回文數處理。2.連續進製轉換。3.好像沒了。解決方法 1.我自己的做法喜歡空間換時間,準備兩個等長陣列。然後將第乙個陣列存正序,另乙個存逆序。最後for迴圈比較每一項即可。2.連續進製轉換。因為...
C 實現回文檢測的方法
回文程式設計客棧 稱正讀和反讀都相同的字串行為 回文 如 abba abccba 12321 123321是 回文 abcde 和 ababab 則不是 回文 console.w程式設計客棧rityrukteline 演算法 請輸入乙個字串!string str console.readline s...
演算法競賽中 C 常用方便的函式
目錄 builtin popcount builtin popcountll next permutation p,p n lower bound up bound assert bool a 二進位制運算子 64位最大數的邊界 字串函式 priority queue unique 計算32位二進位...