zoukankan      html  css  js  c++  java
  • NOI-OJ 2.2 ID:6261 汉诺塔

    思路

    • 汉诺塔是递归思想最经典的例子,通过递归不断缩小问题,将n个盘子的问题简化n-1个,直至1个。

    • 三个盘子,分别为A:from,B:to,C:by(A为起点盘,B为目标盘,C为中转盘)

    • 过程

      1. 将1~n-1号盘子从A移动到C,借助B,递归进行
      2. 将第n号盘子从A移动到B
      3. 将1~n-1号盘子从C移动到B,借助A,递归进行
      • 当n==1时,直接将其从A移动到B

    例程

    #include <iostream>
    using namespace std;
    //A:from    B:to    C:by
    void hanoi(int n, char A, char B, char C){
    	//只有1个的话,从from移动到to 
    	if(n==1){
    		printf("%c->%d->%c
    ", A, n, B);
    		return;
    	}
    	//将前n-1个从from借助to移动到by 
    	hanoi(n-1, A, C, B);
    	//将第n个从from移动到to 
    	printf("%c->%d->%c
    ", A, n, B);
    	//将前n-1个从by借助from移动到to 
    	hanoi(n-1, C, B, A);
    	return;
    }
    int main(){
    	int  n;
    	char from, to, by;
    	scanf("%d %c %c %c", &n, &from, &to, &by);
    	hanoi(n, from, to, by);
    	return 0;
    }
  • 相关阅读:
    CSS深入之第四天
    CSS之第三天总结
    第二天对CSS的学习
    开始走进CSS世界
    Hbuilder实用技巧
    项目总结
    CSS3的chapter6
    CSS3的chapter5
    CSS3的chapter4
    CSS3的chapter3
  • 原文地址:https://www.cnblogs.com/lfyzoi/p/6709691.html
Copyright © 2011-2022 走看看