*Copyright (c)2017,烟台大学计算机与控制工程学院
*All rights reservrd.
*文件名称 :test.cpp
*作者:刘文平
*完成时间:2017年9月7日
*版本号:v1.0
*问题描述:体验复杂度为O(2^n)的函数的运算时间
*输入描述:输入盘子的数目
*程序输出:输出移动盘子的次数以及函数运行的时间
#include <stdio.h>
#include <time.h>
//#define discCount 30
long move(int, char, char,char);
int main()
{
int discCount;
printf("请输入您想设置的金片数量:\n");
scanf("%d",&discCount);
double t1,t2;
long count;
t1=time(0);
count=move(discCount,'A','B','C');
t2=time(0);
printf("%d个盘子需要移动%ld次\n", discCount, count);
printf("用时 %d 秒!", (int)(t2-t1));
return 0;
}
long move(int n, char A, char B,char C)
{
long c1,c2;
if(n==1)
return 1;
else
{
c1=move(n-1,A,C,B);
c2=move(n-1,B,A,C);
return c1+c2+1;
}
}
知识点总结:
体验复杂程度为O(2^n)的程序的运行时间。
学习总结:
体验盘子数discCount为4、8、16、20、24时在时间耗费上的差异。
第二周项目—汉诺塔
最新推荐文章于 2024-10-02 21:02:12 发布