汉诺塔估计CPU

#!/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))

猜你喜欢

转载自blog.csdn.net/qq_35290785/article/details/87992610