第二周项目3 体验复杂度(2)
来源:互联网 发布:免费申请淘宝账号 编辑:程序博客网 时间:2024/04/29 00:27
问题及代码
/* *Copyright (c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:hanuota.cpp *作者:陈梦萍 *完成日期:2015年9月13日 *版本号:v1.0 * *问题描述:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。 印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大 到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照 下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大 片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针 上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。 *输入描述:无 *程序输出:__个盘子需要移动__次*/#include <stdio.h>#define discCount 4long move(int, char, char,char);int main(){ long count; count=move(discCount,'A','B','C'); printf("%d个盘子需要移动%ld次\n", discCount, count); 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; }}
运行结果
#define discCount 4
#define discCount 8
#define discCount 16
#define discCount 20
#define discCount 24
知识点总结
关于本次的汉诺塔问题,我们使用了递归算法,递归算法有利有弊,它好在结构清晰,代码简洁,但是它所占用的空间和运行所需的时间都较多,如果递归的程度太深,可能会出现一些问题。我们可以看到,从4到24,盘子的个数只增加了20个,但移动次数却由原先的两位数变成了8位数。
0 0
- (第二周项目3)体验复杂度
- 第二周项目3-体验复杂度(2)汉诺塔
- 第二周项目3 体验复杂度(2)
- 第二周实践项目3-体验复杂度(2)汉诺塔
- 第二周项目3(2)体验复杂度
- 第二周项目3(2)-体验复杂度 汉诺塔
- 第二周项目3--体验复杂度(2)
- 第二周【项目3-体验复杂度】(2)汉诺塔
- 第二周项目3-体验复杂度(2)
- 第二周 项目3 体验复杂度(2)汉诺塔
- 第二周项目3-体验复杂度(2)汉诺塔
- 第二周 项目3(2)--体验复杂度---汉诺塔
- 第二周项目3-体验复杂度(2)汉诺塔
- 第二周项目3-体验复杂度(2)汉诺塔
- 第二周 项目3(2) - 体验复杂度-汉诺塔程序
- (第二周项目3)体验复杂度(2)
- 第二周项目3-体验复杂度-(2)汉诺塔
- 第二周项目3-体验复杂度(2)汉诺塔
- java中接口有什么作用?请创建一个接口(举例)
- java编程---万年历
- Dart基础学习01--走近Dart
- hdu5432 Pyramid Split
- 通达OA 小飞鱼工作流在线培训教程(九)流程设计(第一部分)
- 第二周项目3 体验复杂度(2)
- [人月神话]读书笔记10--20年后的人月神话(The Mythical Man-Month after 20 Years)
- 2015长春网络赛1001 - HDU5433 - Alisha’s Party (模拟)
- Landslide win for PAP in general election
- java代码中执行shell或调用系统命令
- Unity T4M
- 软工之概况
- Linux进程管理之SMP负载平衡
- boost库asio详解8——几个TCP的简单例