- 论坛徽章:
- 0
|
以下这个连接
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1
因为标题不规范而被锁定。再次提醒大家发帖标题要清楚,明白,谢谢合作。
现另开一贴,我的方法如下:
设数据分为三组 A[1..4],B[1..4],C[1..4]
1 如果 sum(A, 1..4) == sum(B, 1..4) // 目标在 C 中
1.1 如果 sum (A, 1..3) == sum (C, 1..3)
目标为 C[4] 再作一次比较可知轻重,退出。
1.2 如果 sum (A, 1..3) > sum (C, 1..3)
目标较轻,比较 C[1], C[2] 可推出目标之索引,退出。
1.3 如果 sum (A, 1..3) < sum (C, 1..3) 同1.2
2 如果 sum(A, 1..4) > sum (B, 1..4) // 目标不在 C 中,若目标在A中,则重,在B中,则轻。
2.1 如果 A[3]+B[3] +B[4] == A[4] + B[1] + B[2]
目标在 A[1]A[2] 中,且目标较重,比较 A[1], A[2] 可得目标索引,退出。
2.2 如果 A[3]+B[3] +B[4] > A[4] + B[1] + B[2] // (X)
2.2.1 如果 B[1]!=B[2], 则目标在 B 中,较轻,从比较结果可知索引,退出。
2.2.2 如果 B[1]==B[2], 则目标不为 B[1], B[2]。
同时,目标也不为 A[4],因为若目标在A中,必定较重,这与(X) 相悖。
目标不为 B[3], B[4],因为若目标在 B 中,必定较轻,这与(X) 相悖.
故目标为 A[3](其实此时(X) 可化为A[3]>A[4] 了), 退出。
2.3 如果 A[3]+B[3] +B[4] < A[4] + B[1] + B[2]
同 2.2
3 如果 sum(A, 1..4) > sum (B, 1..4)
同 2
q.e.d
[ 本帖最后由 win_hate 于 2005-11-9 10:50 编辑 ] |
|