按照题意模拟即可。
画图解析
比如刚开始a1,a2,a3合并比如刚开始a1,a2,a3合并,那么相加和SUM更新为a1的位置:
然后我们需要把a4,a5的值往前挪(把a2,a3去掉,因为合并为a1了):
然后我们需要继续判断前3个数是否可以合并:
可以合并的话继续合并一个新的sum然后重复之前的步骤,直到此时数组元素个数少于3个,此时无法再合并了。
退出循环,输出操作步数。
#include<bits/stdc++.h>
using namespace std;
int n;
const int N=10010;
int a[N];
int ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
while(n>=3)
{
ans++; //轮次
int cnt=0;
for(int i=1;i+2<=n;i++)
{
int sum=a[i]+a[i+1]+a[i+2];
if(sum<=ans*3)
{
a[i]=sum;
for(int j=i+1;j<=n;j++)
a[j]=a[j+2];
n-=2;
}
}
}
cout<<ans<<endl;
return 0;
}