回复: 面试题: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 编辑.
|