python漢諾塔估計CPU

2021-09-11 12:09:40 字數 1667 閱讀 5017

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: jia shilin

'''漢諾塔:::

list1,list2,list3三個陣列代表三個柱子和圓盤

數字的大小代表圓盤的大小!

數字的順序代表圓盤的順序

'''import time

import datetime

# 漢諾塔函式

def h(n, x_list, y_list, z_list, x, y, z):

global count

if (n == 1):

count += 1

print('%s->%s' % (x, z))

try:

tt = x_list.pop(0)

z_list.insert(0, tt)

except:

pass

print(list1, '################', list2, '################', list3)

else:

h(n - 1, x_list, z_list, y_list, x, z, y)

print('%s->%s' % (x, z))

try:

t = x_list.pop(0)

z_list.insert(0, t)

count += 1

except:

pass

print(list1, '################', list2, '################', list3)

h(n - 1, y_list, x_list, z_list, y, x, z)

return count

# def cpu()

count = 0 # 移動步數

num = 21 # int(input('輸入漢諾塔個數n')) #圓盤初始個數

start_time = datetime.datetime.now() # 開始計時

# 三個柱子和圓盤

list1 = list(range(1, num + 1))

list2 =

list3 =

# 初始狀態欄印

print('初始值')

print(list1, '################', list2, '################', list3)

# 呼叫h()

h(num, list1, list2, list3, 'x', 'y', 'z')

print('總共移動步數:%d' % count)

end_time = datetime.datetime.now() # 結束計時

print(start_time)

print(end_time)

# 時間差,單位秒

difference_time = (end_time - start_time).total_seconds()

print(difference_time)

percent = (35 / (difference_time + 25)) * 100

print('您的cpu跑分為:%.2f' % (percent))

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

漢諾塔問題python詳解 《簡單分析》漢諾塔問題

漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...

Python實現漢諾塔

原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...