查看单个帖子
  #5 (permalink)  
旧 2008-07-06
programmer programmer 当前离线
初级会员
 
注册日期: 2008-07-06
帖子: 2
programmer 正向着好的方向发展
默认 回复: 面试题:a+b=c

我是小菜,大虾的些多指点. 发个我写的, 好久没接触C了,现在重新开始学.都怪上学的时候只顾玩,到头来什么都没学会. 不记得排序的函数了, 所以省了排序这一步.
说下算法思想:
1: 按由小到大排序数组
2: 从右住左搜索, a+b = c 哪么应该满足 a<= c/2并且b>=c/2
#include <stdio.h>

int main(void)
{
int data[] = {1,2,3,4 ,5, 6,7 ,8, 1, 20};
int l , r, p=9, m ;

for (p = 9; p > 2; p--)
{
m = data[p] / 2;
l = 0;
r = p -1;
while (data[l] <= m && data[r] >=m && l != r)
{
if (data[l] + data[r] == data[p])
{
printf("%d", data[p]);
return 0;
}
l++; r--;
}
}
printf("not found");
}

此帖于 2008-07-06 12:30 AM 被 programmer 编辑.
回复时引用此帖