汉诺塔通关系统

Posted xiaobaiyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉诺塔通关系统相关的知识,希望对你有一定的参考价值。

//汉诺塔
//思路:我们可以简化一下假设在开始的柱子上我们只有2个盘,所以我们要把这两个盘移动的目标盘时需要把上面一个盘移动的辅助柱子上·,然后需要把开始柱子上剩下的最后一个盘移动到目标柱,然后再把辅助柱子上的盘移动到目标柱子,不管有多少个盘都要遵循这个规律所以我们可以用递归来计算把
#include <stdio.h> #include <string.h> #define NAME "晨" #define PASS "12345" int count = 0; int Move(char a,char c,int n); int HanNT(char a,char b,char c,int n); int Iogin(char *,char *);//登陆函数 int main() { char a = a;//开始的柱子 char b = b;//辅助的柱子 char c = c;//目标柱子 char Name[50];//用户名 char Pass[50];//登录密码 int n;//汉诺塔的层数 int j; int k; int money = 10;//用户金额 int moneys;//充值的钱 int choice;//用户的选择 printf("<<<<<<<<<<<<汉诺塔通关方案>>>>>>>>>>>>>> "); //HanNT(‘a‘,‘b‘,‘c‘,3); printf("友情提示给系统是收费的(查一次10美元),对于新用户我们会送10美元的 "); printf("请输入用户名:"); scanf("%s",Name); printf("请输入密码:"); scanf("%s",Pass); if(Iogin(Name,Pass) == 1) { printf("登陆成功 "); while(1) { printf("你当前余额还有%d美元,你是否充值 ",money); printf("1,充值 "); printf("2,继续操作 "); printf("请输入你的选择"); scanf("%d",&choice); if(choice == 1) { printf("请输入你充值的金额:"); scanf("%d",&moneys); money = moneys + money; } else { printf("请输入当前汉诺塔的层数:"); scanf("%d",&n); printf("方案如下: "); HanNT(a,b,c,n); money -= 10; } if(money == 0) { printf("金额不足 "); break; } } } else { printf("密码或用户名错误 "); printf("没有注册,还想白piao "); printf("*************************** "); printf("程序开始自毁系统 "); printf("*************************** "); printf("倒计时5秒 "); for(j = 0;j < 5;j ++) { printf("%d秒!!!!! ",j + 1); } printf("砰砰,世界安静了 "); } } int Move(char a,char c,int n) { printf("第%d次把%d号盘从%c柱子移动到%c柱子上 ",++ count,n,a,c); } int HanNT(char a,char b,char c,int n) { if(n == 1) { Move(a,c,n); } else { HanNT(a,c,b,n - 1); Move(a,c,n); HanNT(b,a,c,n - 1); } } int Iogin(char *Name,char *Pass) { int i = 0; if(strcmp(NAME,Name)== 0 && strcmp(PASS,Pass) == 0) { i = 1; } return i; }

 

以上是关于汉诺塔通关系统的主要内容,如果未能解决你的问题,请参考以下文章