您的位置:首页 > 编程语言

下面是我写的poj 1738 关于石子合并的代码,那位大侠帮我看看

2010-06-05 18:53 316 查看
//我的想法是 在 石子堆中找一个单调的区间 例如 1 2 3 2 1,分别合并为以下情况 3 3 2 1, 3 3 3,6 3, 9。基本是这种思想,

//可是提交后老是 WA,希望那位高手可以帮帮忙

#include <stdio.h>

int solve(int *a,int n);

int main ()
{
int stone[50000];
int anwser[10000];
int i,j=0;
int n;

scanf("%d",&n);
while(n)
{
for(i=0;i<n;i++)
scanf("%d",&stone[i]);
if(n!=1)
anwser[j]= solve(stone,n);
else
anwser[j]=0;

scanf("%d",&n);
j++;
}

for(i=0;i<j;i++)
printf("%d/n",anwser[i]);

}

int solve(int *stone,int n)
{

int sum=0;
int i,j,l;
while(n>=3)
{
for(i=1;i<n-1&&n>=3;i++)
{
if(stone[i-1]<=stone[i+1])
{
sum+=stone[i]=stone[i-1]+stone[i];
for(j=i;j<n;j++)
stone[j-1]=stone[j];
n--;
i--;
}
}

for(l=n-2;l>0&&n>=3;l--)
{
if(stone[l+1]<=stone[l-1])
{
sum+=stone[l]=stone[l+1]+stone[l];
for(j=l+2;j<n;j++)
stone[j-1]=stone[j];
n--;
}
}

}

sum+=stone[0]+stone[1];
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: