生活随笔
收集整理的這篇文章主要介紹了
编程之美--游戏之乐--1.3一摞烙饼的排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
話不多說
直接上代碼
class Node():def __init__(self,cakes,level,steps):self.cakes = cakesself.level = levelself.steps = steps
class Solution():def __init__(self,nums):self.toplevel =
2*len(nums)-
1self.stack = [Node(nums,
0,[])]
def isSorted(self,nums):for i
in range(len(nums)-
1):
if nums[i]>nums[i+
1]:
return Falsereturn True
'''
最小步驟預測
'''def low_predict(self, cakes):number =
0for i
in range(len(cakes) -
1):
if abs(cakes[i] - cakes[i +
1])!=
1:number +=
1return number
'''
解決方案
'''def solve(self):while self.stack:first = self.stack.pop()cakes = first.cakes
if self.isSorted(cakes):
print "翻轉次數為:%d"%first.level,
"翻轉步驟為:",first.steps
if first.level<self.toplevel:self.toplevel = first.level
else:low_level = self.low_predict(cakes)
if first.level+low_level<self.toplevel:
for i
in range(
1,len(cakes)):left = cakes[:i+
1]right = cakes[i+
1:]nowcakes = left[::-
1]+right
if not first.steps
or first.steps[-
1]!=i:newnode = Node(nowcakes,first.level+
1,first.steps+[i])self.stack.append(newnode)
'''
程序調用
'''
zz = Solution([
3,
2,
1,
6,
5,
4,
9,
8,
7,
0])
print zz.solve()
總結
以上是生活随笔為你收集整理的编程之美--游戏之乐--1.3一摞烙饼的排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。