汉诺塔
来源:互联网 发布:两头usb数据插口线图片 编辑:程序博客网 时间:2024/06/15 02:47
package zcx;
import java.util.Scanner;
/**
* 汉诺塔问题
* @author Zcxu
* 它的规则是这样的:有n个盘
* 1.将n-1个盘先移动到辅助盘上
* 2.将第n个盘移动到目的位置
* 3.将辅助盘上的n-1个盘子移动到目的盘子上。
*/
public class Hanoi {
static int count = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个n,表示有多少个盘子:");
int n = sc.nextInt();
act('A','B','C',n);
}
public static void act(char A,char B,char C,int n){
if(n<=0){
System.out.println("输入的数字有错");
return;
}
if(n==1){
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
}else{
act(A,C,B,n-1);//将n-1个盘先移动到辅助盘上
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
act(B,A,C,n-1);//辅助盘上的n-1个盘子移动到目的盘子上
}
}
}
import java.util.Scanner;
/**
* 汉诺塔问题
* @author Zcxu
* 它的规则是这样的:有n个盘
* 1.将n-1个盘先移动到辅助盘上
* 2.将第n个盘移动到目的位置
* 3.将辅助盘上的n-1个盘子移动到目的盘子上。
*/
public class Hanoi {
static int count = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个n,表示有多少个盘子:");
int n = sc.nextInt();
act('A','B','C',n);
}
public static void act(char A,char B,char C,int n){
if(n<=0){
System.out.println("输入的数字有错");
return;
}
if(n==1){
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
}else{
act(A,C,B,n-1);//将n-1个盘先移动到辅助盘上
System.out.println(count++ + ".Move " + A + "
through " + B + " to " + C);
act(B,A,C,n-1);//辅助盘上的n-1个盘子移动到目的盘子上
}
}
}
阅读全文
0 0
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- Vim:打造Linux程序员的编辑利器(ctags+cscope+taglist+code_complete)
- @RestController与@Controller的区别
- [Unity 设计模式]IOC依赖倒置
- Bootstrap Table使用整理(三)
- 线程死锁
- 汉诺塔
- 从客户端(content1="<img src="/web/news/...")中检测到有潜在危险的 Request.Form 值。
- Java Concurrency in Practice学习笔记
- Haskell学习笔记 --- GHCi中如何敲入多行代码
- 操作系统刷题(十六)
- 数据库索引的实现原理
- 关于git 与码云
- 程序员最核心的竞争力是什么?
- Eclipse + Golang 开发环境搭建 (要点备忘)