第二周 项目三 (2)汉诺塔
来源:互联网 发布:java计算n的阶乘 编辑:程序博客网 时间:2024/05/22 06:42
- /*
- * Copyright(c) 2017,烟台大学计算机学院
- * All rights reserved.
- * 文件名称:cpp1.
- * 作 者:张翠平
- * 完成日期:2017 年 9 月 17 日
- * 版 本 号:v1.0
- *
- * 问题描述:汉诺塔
- * 输入描述:无
- * 程序输出:移动次数
- */
#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; }}
运行结果:
#include <stdio.h>#define discCount 8long 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; }}
运行结果:
#include <stdio.h>#define discCount 16long 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; }}
#include <stdio.h>#define discCount 20long 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; }}
#include <stdio.h>#define discCount 24long 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; }}
知识点总结:
用递归的算法求解汉诺塔问题,其复杂度可以求得为O(2的N次方),是指数级的算法。
心得体会:
递归算法求解汉诺塔问题难度太大,不建议采用。
阅读全文
0 0
- 第二周项目三(2) 汉诺塔
- 第二周 项目三 (2)汉诺塔
- 第二周项目三(2)
- 第二周实践项目三(2)
- 第二周项目三(2)
- 第二周:项目三(2)——汉诺塔
- 第二周 【项目三】体验复杂度(2)汉诺塔
- 第二周项目三(2) 汉诺塔问题
- 第二周项目三---汉诺塔
- 第二周项目三-汉诺塔
- 第二周项目三-汉诺塔
- 第二周项目三 汉诺塔
- 第二周项目三:汉诺塔
- 第二周项目三.2
- 第二周项目三.2
- 第二周项目三
- 第二周项目三
- 第二周项目三
- 机器学习笔记(1)
- CSS实战(代码部分)
- 在Ubuntu 14 下安装Java
- 第二周项目3-体验复杂度(2)
- TypeError: slice indices must be integers or None or have an __index__ method
- 第二周 项目三 (2)汉诺塔
- 手风琴效果
- 回顾与展望
- POJ 3348 求凸包面积
- 备考pat
- angular.js 购物车
- C++ 标准库 bitset类型
- Sublime Text 3改变插件包安装位置
- dubbo入门