SHAOXIAOJ正在加载中...

2610: 分治策略-Hani塔

金币值:4 定数:9 时间限制:1.000 s 内存限制:128 M
正确:4 提交:4 正确率:100.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 算法设计

题目描述

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

测试代码   复制

#include <stdio.h>

int f(int n, char a, char b, char c) {
	if ( n == 1 ) {
		 
	} else {
		 
	}
}

int main(void) {
	int  n;
	char a, b, c;
	a = 'a';
	b = 'b';
	c = 'c';
	scanf("%d", &n);
	int count = f(n, a, b, c);
	printf("%d\n", count);
	return 0;
}

输入格式

输入一个整数表示有n个盘。

输出格式

输出一个整数表示需要移动的次数。

输入样例    复制

3

输出样例    复制

7

提示

如果需要输出移动磁盘的顺序,则应该如何修改程序?