| ||||
| 引用:
http://www.cpper.com/c/showthread-t_446.html |
| |||
| 我是小菜,大虾的些多指点. 发个我写的, 好久没接触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 编辑. |