#!/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(x_list.pop(),x, z_list.append(x_list.pop()) ,x,z,y)
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))
汉诺塔估计CPU
猜你喜欢
转载自blog.csdn.net/qq_35290785/article/details/87992610
今日推荐
周排行