如:当鱼的大小是a=[101,53,42,102,101,55,54]且k=1时,一种可能的掠食过程是(下划线表示被吃):[101,53,42,102,101,55,54]→[101,53,42,102,55,54]→[101,42,102,55,54]→[42,102,55,54]→[42,102,55],最后只剩下3条鱼。小林想用Python程序模拟研究一下,对于给定的鱼大小和k的值,最坏情况下会剩几条鱼。
a = [101, 53, 42, 102, 101, 55, 54]
k = int(input()) # k的含义如题所述
last = len(a) - 1
flag = True
while last > 0 and flag:
flag = False
for j in range( ):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
last = j
flag = True
n = len(a)
st = [None] * n
top = -1
for i in range(n):
while top >= 0 and st[top] < a[i] and a[i] - st[top] <= k:
top -= 1
top += 1
print("最坏情况下会剩下%d 条鱼" % (top+1))
size = int(input()) #输入要查询的鱼的尺寸
i = 0
j = top
while i <= j:
m = (i+j) // 2
if # 若size值与第m号元素相等,则结束循环,此处关系表达式略
break
elif :
i = m + 1
else:
j = m - 1
if :
print("大小为%d 的鱼还在!" % size)
else:
print("大小为%d 的鱼不存在,可能已经被吃了" % size)