主题:拼三角【50】
QUICKBASIC
[专家分:50] 发布于 2009-09-05 19:56:00
拼三角
有一次,老师给小明N根小木棒,要他从中选出K根,使这K根当中的任意三根都能拼成一个三角形。老师告诉他,构成一个三角形的条件是:任意两边之和大于第三边,任意两边之差小于第三边。小明思考后,发现将这些小木棒按长短顺序排列后,很容易解决问题。请你用表达式RANDOM(900)随机产生N个正整数(表示小木棒的长度),帮小明求出K的最大值。
输入:N(3≤N≤500)
输出:K的最大值
样例
输入:6
排序后的6个随机数为:19,26,161,220,348,529
输出:3
回复列表 (共8个回复)
沙发
为谁疯狂 [专家分:0] 发布于 2009-09-06 16:53:00
不知这样行不行:
CLS
INPUT n
DIM a(n + 1)
FOR i = 1 TO n
RANDOMIZE TIMER
a(i) = INT(RND * 900 + 1)
NEXT i
PRINT
FOR i = 1 TO n - 1
FOR j = i + 1 TO n
IF a(i) > a(j) THEN SWAP a(i), a(j)
NEXT j
NEXT i
FOR i = 1 TO n
PRINT a(i);
NEXT i
PRINT
FOR i = 1 TO n - 1
FOR j = i + 1 TO n
FOR k = j + 1 TO n
IF a(i) + a(j) < a(k) OR a(j) - a(i) > a(k) THEN a(i) = 0
NEXT k
NEXT j
NEXT i
PRINT
FOR i = 1 TO n
IF a(i) <> 0 THEN PRINT a(i): s = s + 1
NEXT i
PRINT s
板凳
phile [专家分:2310] 发布于 2009-09-06 18:44:00
太简单,用组合!
3 楼
天天和和 [专家分:1420] 发布于 2009-09-07 21:59:00
对 组合的方法
4 楼
phile [专家分:2310] 发布于 2009-09-10 17:40:00
经典组合
5 楼
天天和和 [专家分:1420] 发布于 2009-09-11 19:44:00
不错不错
6 楼
phile [专家分:2310] 发布于 2009-09-12 10:14:00
?
7 楼
天天和和 [专家分:1420] 发布于 2009-09-12 12:21:00
有什么问题啊
8 楼
phile [专家分:2310] 发布于 2009-09-13 10:48:00
没
我来回复