1:基本思路
1:相邻的珍珠可以合并(前面珍珠尾标记和后面珍珠头标记相同)会释放能量,并且将相同的标记消去,形成的新珍珠的头标记和前面珍珠的头标记相同,尾标记和后面珍珠的尾标记相同。
2:不难发现,当消去的标记数值越小,对整体来说释放的总能量越大。
2:代码
#include<stdio.h>
#define MAX 100
int findMinNumber(int *a,int length)//找出数值中最小的标记数值并返回其在数组中的下标
{
int min=a[0],flag=0;
for(int i=1;i<length;i++)
{
if(a[i]<min)
{
min=a[i];
flag=i;
}
}
return flag;
}
int main(void)
{
int n,a[MAX];
long int energy=0;
scanf("%d",&n);
int flag=n;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<flag-1;i++)//找出标记数值最小的珍珠,将其作为后面的珍珠,将小的数值消去
{
int j=findMinNumber(a,n);
if(j==0)
{
energy=energy+a[n-1]*a[j]*a[j+1];
}else
{
energy=energy+a[j-1]*a[j]*a[(j+1)%n];
}
for(int k=j;k<n-1;k++)//消去小数值后&#