|
|
发表于 2020-6-22 21:16:48
|
显示全部楼层
当然地球人都知道,每一步都是F是最大的
程序的话,好像很麻烦:需要每一个路径(所谓FT,正好对应二进制),如果3步,就是8种情况,bit函数用来生成(0,1)的N位全排列,接下来就是对每一个排列的行,按照0转动,1前进,进行模拟,最后计算结果,把最大距离那个保存起来,最后用比如是(11111),其实就是(FFFFF)和给定的指令(例如:FFFTFF)作比较,差了几位,就是需要改几步
- def bit(num = 8, state = ()):
- for pos in range(2):
- if len(state) == num - 1:
- yield (pos,)
- else:
- for result in bit(num, state + (pos,)):
- yield (pos,) + result
- one_step=(1,-1)
- max_pos = 0
- max_step = None
- for res in bit(3):
- pos = 0
- direct = 0
- for step in res:
- if step == 0:
- direct += 1
- else:
- pos += one_step[direct % 2]
- if abs(pos) > max_pos:
- max_pos = abs(pos)
- max_step = res
- print(max_pos,max_step)
复制代码
|
|