石子合并问题

来源:互联网 发布:nokia5233软件下载 编辑:程序博客网 时间:2024/06/05 02:38

问题描述

在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。

规定每次只能选择相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。

试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。

测试用例: 

4(石子的堆数) 

4 4 5 9(每一堆的石子数目) 

输出:     43     54  

这里只写了最大,最小思路相同

#include<stdio.h>#define n 4int a[]={4,4,5,9};int main(){    int i,j,max=0,sum=0,temp=0;    for(i=0;i<n;i++)    {        sum=a[i];        temp=0;        for(j=1;j<n;j++)        {            sum+=a[(i+j)%4];            temp+=sum;        }        max=max>temp?max:temp;    }    printf("%d\n",max);}


0 0
原创粉丝点击