计算最大盛水面积
例如:{1,8,6,2,5,4,8,3,7};
输出:49;
方法:利用头尾指针移动法,遵守木桶短板原则。水的体积取决于短板。头尾指针小的一方移动,指针在移动的过程中,保留计算的最大值即可。
int MaxArea(int *s,int len)
{
int MaxSum= 0;
int tail = len-1;
int head = 0;
while(head !=tail)//头尾指针相遇则退出循环
{
int temp = 0;
if(s[head]>s[tail])//头指针大于尾指针
{
temp = (tail-head)*(s[tail]>s[head]?s[head]:s[tail]);
tail--;
}else{
temp = (tail-head)*(s[tail]>s[head]?s[head]:s[tail]);
head++;
}
if(temp>MaxSum)
MaxSum = temp;
}
return MaxSum;
}