c语言编写-C语言怎么编写这个算法?

问题描述

C语言怎么编写这个算法?

设a,b,c,d是4个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,3,。。。n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍然按同样顺序重叠。在移动圆盘时应该遵守以下移动规则。
规则1,每次只能移动1个圆盘;
规则2,任何时刻都不允许将较大的圆盘压在较小的圆盘之上;
规则3,在满足移动规则1和规则2的前提下,可将圆盘移至a,b,c,d任一塔座上。

解决方案

汉诺塔算法

void move(char x,char y){
printf("%c-->%cn",x,y);
}

void hanoi(int n,char one,char two,char three){
/*将n个盘从one座借助two座,移到three座*/
if(n==1) move(one,three);
else{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}

main(){
int n;
printf("input the number of diskes:");
scanf("%d",&n);
printf("The step to moving %3d diskes:n",n);
hanoi(n,'A','B','C');
}

时间: 2024-08-23 03:24:47

c语言编写-C语言怎么编写这个算法?的相关文章

编写C语言程序需要注意的问题

在编写C语言的函数时,有几个要点需要我们牢记,因为它们影响到函数的效率和可用性. 4.5.1 参数和通用函数 通用函数是指能够被用在各种情况下,或者是可被许多不同程序员使用的函数.我们不应该把通用函数建立在全局变量上(不应该在通用函数中使用全局变量).函数所需要的所有数据都应该用参数传递(在个别难以这样做的情况下,可以使用静态变量).使用参数传递, 除了有助于函数能用在多种情况下之外,还能提高函数代码的可读性.不用全局变量,可以使得函数减少因副作用而导致错误的可能性. 4.5.2 效率 函数是C

c语言-用C语言编写能进行四则运算的程序

问题描述 用C语言编写能进行四则运算的程序 我想用C语言编一个能进行简单的四则运算的程序,应该怎么写,请详细解释一下输入和计算部分 解决方案 实现四则运算是比较简单的,你可以使用两个栈,一个栈用来存贮操作的数字(0~n),一个栈用来存储操作符(+-等).你先把四则运算表达式存为一个字符串,然后遍历各个字符,如果是数字,那就存起来,如果是操作符,那就与前一个操作符比较,看看优先级是不是比前一个大,如果是,那就存起来,如果不是,那就把数字栈里的前两个数按照前一个操作符进行运算.结果用一个变量保存起来

c语言-用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决?

问题描述 用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决? 用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决? 解决方案 安装完整版本的VC++ 6.0,新建一个项目,把你原来的项目的代码复制粘贴到新的项目,再编译. 原版的VC++下载:http://download.csdn.net/album/detail/639 (我亲自上传,并且不要任何积分)

请问下能编写脚本语言来实现远程比对指纹识别的压力测试吗?

问题描述 请问下能编写脚本语言来实现远程比对指纹识别的压力测试吗? 请问下我怎么去实现呢?提供了Web service API 和指纹算法,怎么通过写脚本的方式去实现远程比对的指纹识别的压力测试,请高手们指点啊

api c-怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

问题描述 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件 怎样用c语言调用wiondowsAPI函数,编写一个文本框,双击可以打开一个图片文件

求助.我拿到一个用VB.net 语言 Vs2005 和Access工具 编写的程序 可我不会运行 急求高手指点

问题描述 求助.我拿到一个用VB.net语言Vs2005和Access工具编写的程序可我不会运行急求高手指点请对这方面的有研究的高手联系QQ873498013我把程序发给你,只要告诉我如何配置运行的即可.Q币相赠大伙帮帮忙啊真得很急! 解决方案 解决方案二:安装.netFrameWork2.0解决方案三:安装2005就可以调试了解决方案四:我已经加你了

mysql5.7在centos下编写c语言程序操作数据库时,头文件#include<mysql/mysql.h>报错

问题描述 mysql5.7在centos下编写c语言程序操作数据库时,头文件#include<mysql/mysql.h>报错 mysql5.7在centos下编写c语言程序操作数据库时,头文件#include报错 解决方案 这是没有找到plugin_auth_common.h文件啊,你对照一下目录下面有没有这个文件啊...另外这个/usr/include/mysql/mysql目录看起来有点奇怪啊,你是不是多建了一层mysql目录

《Linux C编程从入门到精通》一第2章 在Linux中编写C语言代码2.1 Linux中C语言程序开发流程和工具介绍

第2章 在Linux中编写C语言代码 Linux C编程从入门到精通 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Lin

c语言-怎么用C语言实现一个通信协议的编写

问题描述 怎么用C语言实现一个通信协议的编写 各位高手,手头有一个通信的协议说明,需要转换引脚的高低电平来实现数据的通信, 但是一直没有一个好的思路,如何组织起整个通信的框架,在接收到相应数据,然后 解析完成后根据解析的数据做相应的动作处理,有没有什么资料需要了解的,望指教. 解决方案 帮顶吧!这个没研究过 解决方案二: http://www.go-gddq.com/html/QiTa-ZongHe_tx/2013-01/992622.htm

《Linux C编程从入门到精通》——第 2 章 在Linux中编写C语言代码 2.1Linux中C语言程序开发流程和工具介绍

第 2 章 在Linux中编写C语言代码 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Linux中C语言程序开发流程和工