https://blog.csdn.net/Cherishlife_/article/details/84454614
https://blog.csdn.net/dreamzuora/article/details/53150898
https://blog.csdn.net/dreamzuora/article/details/53150853
汉诺塔基本题
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1200.html
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int head[9999],n;
const int inf = 0x3f3f3f3f;
void dfs(int m,char a,char b,char c){
    if(m==1){
        printf("Move disk %d from %c to %c\n",m,a,c);
        return;
    }
    dfs(m-1,a,c,b);
    printf("Move disk %d from %c to %c\n",m,a,c);
    dfs(m-1,b,a,c);
}
int main()
{
    cin>>n;
    dfs(n,'A','B','C');
    return 0;
}汉诺塔系列1
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2064.html
3^n
汉诺塔系列2
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2066.html
2^(n-m)
