5
(S,T) and S>0 and S+T<=3 -> (0,S+T)
7
两瓶中的油全倒入
3
两瓶
6
(S,T) and T>0 and S+T<=7 -> (S+T,0)
3
两瓶中的油全倒入
7
两瓶
7
(S,T) and S>0 and S+T>=3 -> (S+T-3,3)
7
两瓶中的油倒满
3
两瓶
8
(S,T) and T>0 and S+T>=7 -> (7,S+T-7)
3
两瓶中的油倒满
7
两瓶
3.
代码(穷搜索)
广度优先搜索:
(文本输出)
import
os
initial_oil_state = [
10
,
0
,
0
]
#
油瓶的初始状态
oil_volume = [
10
,
7
,
3
]
#
每个油瓶的对应容积
from
collections
import
deque
#
导入
collections
标准库中的队列对象和方法
#
利用
python
的
deque
队列记录状态转移情况,初始化时加入油瓶初始状态。
deque
是可以
从头尾插入和删除的队列
record = deque()
record.append(initial_oil_state)
#
删除文件,因为文件以追加模式打开
if
os.path.exists(
'oil_half_width_answer.txt'
):
os.remove(
'oil_half_width_answer.txt'
)
def
NextStateLegal(current_state,oil_volume):
next_action = [
(from_,to_)
#
列表推导
#
例如
[x*x for x in range(10) if x % 3 == 0]
得出
10
以内能被
3
整除的数的平方构成
的列表