【wikioi 3145】汉诺塔游戏C代码

原创 2013年12月02日 21:26:09

//汉诺塔
#include<stdio.h>
#include<stdlib.h>

void work(int n,int s,int t)  //参数如上面所说
{
     char x='A'+s-1;   //方便输出字母
     char y='A'+t-1;
     if(n == 1)   //结束条件
     {
         printf("%d from %c to %c\n",n,x,y);
         return ;
     }
 
     int v=6-s-t;//即非起点与终点的塔
     work(n-1,s,v);   //递归结构  向缓冲区挪动
     printf("%d from %c to %c\n",n,x,y);
     work(n-1,v,t);    //缓冲区挪回
}

/*  ……

    将最大的盘挪到终点->倒数第二及前面挪到缓冲区,以此类推

    ……

  

*/


int main(void)
{
  int i,j;
  int x,y;
  int sum=1;
  int n;

  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
    sum=sum<<1;
  }
  sum--;//2的n次方-1
  printf("%d\n",sum);
 
  work(n,1,3);//A 为1,B 为2,C为3
  
  return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

[Wikioi 3145]汉诺塔游戏

/* 思路: 观察移动步骤,可以将移动步骤分成3个部分,这里暂且假设可以一次性移动多个盘子,在后面的递归操作中将分解这些不合题意的步骤: eg:将最顶端盘子编号为top的a塔的n个盘子移动到b塔...
  • qpswwww
  • qpswwww
  • 2014年05月19日 17:29
  • 1083

wikioi 3145 汉诺塔游戏

#include int f[11]; int getint() { int n; scanf("%d",&n); return n; } void move(int n,char s,char...
  • u012316656
  • u012316656
  • 2014年02月18日 14:53
  • 902

[递归]CODEVS-3145 汉诺塔游戏

CODEVS-1842 递归第一次递归递归,即定义一组基本操作,这组操作将规模小一点(或大一点)的操作当做一个整体——无需关心它的细节,只当它已经完成了——然后执行剩下的操作。而在更小或更大的规模中也...
  • qq_27848507
  • qq_27848507
  • 2017年03月23日 12:19
  • 444

wikioi天梯之3145 汉诺塔游戏

题目
  • leo1949asd
  • leo1949asd
  • 2014年04月15日 19:38
  • 1087

wikioi汉诺塔游戏c

#include #include int n; void hanoi(int a, char q, char z, char m) {     if (a!=1) { ...
  • jacky05110
  • jacky05110
  • 2014年07月04日 18:49
  • 317

codevs[3145]汉诺塔游戏

时间限制: 1 s  空间限制: 32000 KB  题目等级 : 白银 Silver 题解 题目描述 ...
  • Loi_Jenny
  • Loi_Jenny
  • 2016年01月07日 18:45
  • 243

用C语言栈的方式求解汉诺塔游戏

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序...
  • bboyliaoye
  • bboyliaoye
  • 2013年12月13日 11:52
  • 2017

CODEVS 3145 汉诺塔游戏

题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题。在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所...
  • jialike2012
  • jialike2012
  • 2015年01月29日 15:07
  • 371

3145 汉诺塔游戏

题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题。在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所示)...
  • mlp750303040
  • mlp750303040
  • 2017年05月20日 16:21
  • 114

CODEVS 3145汉诺塔游戏

CODEVS 3145汉诺塔游戏
  • qq_36409190
  • qq_36409190
  • 2016年10月18日 00:52
  • 80
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【wikioi 3145】汉诺塔游戏C代码
举报原因:
原因补充:

(最多只允许输入30个字)