在一个集合S中寻找最大的C使A+B=C且A,B,C均在集合当中

1,将集合S中的数排序X1<=X2<=X3.............Xn;
2,for(i=n;i>0;i--)
{
for(j=0,k=i-1;k>j;)
{
if(Xj+Xk>Xi)
{
      k--;
      cotinue;
}
if(Xj+Xk<Xi)
{
      j++;
      contiue;
}
A=Xj;
B=Xk;
C=Xi;
break;
}
例子:
1,4,7,10,11,13,15,18,34
34:1-18,4-18........15-18
18:1-15,4-15,4-13,7-13,7-11
结果:
A=7;B=11,C=18;
posted @ 2011-06-19 11:35  freewater  阅读(698)  评论(0编辑  收藏  举报