汉诺塔问题--夏令营

题目

汉诺塔问题--夏令营_第1张图片

 汉诺塔问题--夏令营_第2张图片

 

tips:

1.本题只用多试几次,由数据推导规律即可

汉诺塔问题--夏令营_第3张图片

 2.汉诺塔问题分析

这里的递归函数是(n,a,b,c)指n个盘子从a移到c,且凭借b

递归边界是n=1

原始思想:要想把n个盘子从a移到c,若n=1则直接move a到c

n>1时,就先挪前n-1张从a到b,则可把最后一张盘子从a移到c

最后一步,把n-1张盘子从b移到c。

这就是比较粗略的宏观视角,但是同时也思考了递归边界的特殊值(微观),由宏观就会递归到微观。

汉诺塔问题--夏令营_第4张图片

 

答案

#include 
#include
#include
using namespace std;

int main()
{
	int t, n, k;
	cin>>t;
	while (t--)
	{
		cin >> n >> k;
        long long ans=pow(2, n - k);
		cout << ans << endl;

	}
	return 0;
}

你可能感兴趣的:(算法,c++,数据结构)