C语言计算汉诺塔最小移动步数 (二)

前几天写的:C语言计算汉诺塔最小移动步数(一)

当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤。=_=

偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的。所以又根据这个公式又写了一个。那篇的实现是两个数组来回赋值,这个是用一个数组实现的。

代码如下:(运行结果请看上面链接)

/**************************************

* 目的:用来计算汉诺塔移动的次数

* 原理:汉诺塔的最小移动次数为2^n-1

* 时间:2012-10-31

* 平台:linux && windows

* 作者:odaynot

*/

#include

int main()

{

int n, i, cf, fi, t; //n用来保存汉诺塔的层数,i用来控制循环,cf控制进位,fi用来判断第一位,t用来临时保存i值

char a[100]; //如溢出,则换用更大的数组。

a[0] = '1'; //初始化指为1

a[1] = '\0';

printf("Please enter the number of the Tower of Hanoi(3-?):");

scanf("%d", &n);

while(n--)

{

i = 0; cf = 0; fi = 0;

while(a[++i]); //获得当前数组的存储内容最大下标。以便控制循环和赋结尾符

t = i; //保存i值

if(a[0]>'4')

fi = 1;

else

fi = 0;

while(i--) {

if(a[i]>'4') {

a[i+fi] = (a[i]-'0') * 2 % 10 + cf + '0';

cf = 1;

}

else {

a[i+fi] = (a[i]-'0') * 2 + cf + '0';

cf = 0;

}

}

a[t+fi] = '\0';

if(fi)

a[0] = '1';

}

i = 0;

while(a[++i]);

a[i-1] = a[i-1]-'0'-1 + '0'; //公式2^n-1中的‘-1’操作

printf("The minimum number of moves:%s\n", a);

return 0;

}

c语言汉诺塔移动次数,C语言计算汉诺塔最小挪动步数 (二)相关推荐

  1. c语言 统计数量用count_c语言中统计重复数字次数 c语言问题 统计不同数字的个数...

    请问c语言当中,如何统计数字各自出现的次数 请教一个问题: 在c语言当中,用数组的方法,统计输入的一串数字,统计实现代码: #include int main() { int num = 0, i = ...

  2. c语言递归求塔移动次数,c语言递归调用汉诺塔

    递归算法的出发点不是由初始条件出发,而是把出发点放在求解的目标上,从所求的未知项出发逐次调用本身的求解过程,直到递归的边界(即初始条件). 汉诺塔问题的重点是分析移动的规则,找到规律和边界条件. 若需 ...

  3. c语言求寻找假币的次数,C语言经典算法 - 八枚银币问题

    C语言经典算法 - 八枚银币问题 说明现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或 较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币 ...

  4. c语言如何寻找排序最少次数,C语言快速排序比较次数问题

    满意答案 wtrjTcZ9 推荐于 2018.03.21 采纳率:55%    等级:7 已帮助:458人 你可以用冒泡排序法自己试一试 目的:按要求从大到小或从小到大排序. 基本思路:对尚未排序的各 ...

  5. 汉诺塔怎么加计数次数c语言,C语言计算汉诺塔最小移动步数 (二)

    前几天写的:C语言计算汉诺塔最小移动步数(一) 当时还不知道用2^n-1这个公式来求解汉诺塔移动步骤.=_= 偶然间在网上发现了这个公式,发现当时写的算法还是比较繁琐的.所以又根据这个公式又写了一个. ...

  6. 汉诺塔递归的c语言实现(递归)

    对于递归来讲, 汉诺塔实际是经典到不能再经典的例子了,   每个数据结构的教材对会提到. 但是到最后只给出一段类似下面的一段代码: #include<stdio.h>void move(i ...

  7. 汉诺塔小游戏 c语言

    相信大家在学习C语言嵌套的时候已经学习过经典问题汉诺塔了,我学习时就想能不能搞个汉诺塔的游戏出来,结果睡了一觉就给忘了.今天突然想起,搞出来与大家分享,水平一般,但符合汉诺塔规则.最终代码我放在文章最 ...

  8. c语言汉诺塔实验报告,C语言汉诺塔的简单了解

    汉诺塔详解 以4层为例 以下为我的拙见,还希望大佬雅正 要把汉诺塔移动到c 需要把1,2,3层移到b 把4移动到c 在吧123移动到b 但是一次只能动一块 所以我们目前要做的就是把上面三块移动到b 那 ...

  9. 汉诺塔求次数(用递归)

    Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称:汉诺塔求次数(用递归) *作者:杨飞 *完成日期:2013年11月25日 *版本号:v ...

最新文章

  1. java控制台两个字符串_java控制台输入字符串
  2. 第四节:格式化器如何序列化类型实例
  3. python图片找字_如何用python查找图像中的字母
  4. 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...
  5. 使用jmap来生成堆转储快照
  6. python装饰器 property_介绍Python的@property装饰器的用法
  7. azure备份存储层分类_如何配置Azure SQL数据库长期保留(LTR)备份
  8. vim 编辑器 打开GB2312、GBK文件乱码解决方法
  9. VMware Workstation 常见问题解决
  10. win10系统如何设置局域网服务器地址,Win10怎么设置局域网IP地址
  11. 黄仁勋口述:英伟达的发展之道和星辰大海
  12. 数字孪生城市优秀案例汇编(2021年) 附下载
  13. Swift 网络请求Moya框架简单二次封装
  14. 简单典型二阶系统_【文献选译】二阶弹性波动方程PML的简单实现
  15. 如何评价一个好系统?
  16. 叠片过滤器:过滤器设备的普遍使用
  17. 中国的顶级黑客在国际上是一个什么样的水平?
  18. 六年级上册计算机教案人教版,人教版数学六年级上册教学设计
  19. mysql show master status为空值
  20. 如何使用WRLD构建教练假期展示柜

热门文章

  1. 计算机网课计划,计算机基础课程授课计划表.docx
  2. STC15W408AS的485串口实现自发自收
  3. android蓝牙配对加连接,android – 配对设备的蓝牙自动连接
  4. 十分钟实现灭霸打响指灰飞烟灭的效果
  5. 2018华为实习生招聘(软件)
  6. java文件中public 类名要和文件名保持一致以及其他细节
  7. 数据分析终极一问:自然增长率,到底怎么算才合理!
  8. 正则表达式密码校验(由数字、字母、符号三者同时组合)
  9. Android端集成支付宝支付
  10. Apples Prologue(吃苹果问题) C++