牛牛的汉诺塔

牛牛的汉诺塔

https://ac.nowcoder.com/acm/problem/201839

第一次写发现超时了,于是选择了30和50来打表

#include <bits stdc++.h>
using namespace std;
unsigned long long a[9];
unsigned long long sum;
void Hanoi(int n,char pre,char zhong,char mu){
    if(n==30){
        a[(pre-'A')*3+zhong-'A']+=238609299;
        a[(pre-'A')*3+mu-'A']+=119304657;
        a[(zhong-'A')*3+pre-'A']+=119304642;
        a[(zhong-'A')*3+mu-'A']+=238609299;
        a[(mu-'A')*3+pre-'A']+=238609284;
        a[(mu-'A')*3+zhong-'A']+=119304642;
        sum+=1073741823;
        return ;
    }
    if(n==50){
        a[(pre-'A')*3+zhong-'A']+=250199979298369;
        a[(pre-'A')*3+mu-'A']+=125099989649197;
        a[(zhong-'A')*3+pre-'A']+=125099989649172;
        a[(zhong-'A')*3+mu-'A']+=250199979298369;
        a[(mu-'A')*3+pre-'A']+=250199979298344;
        a[(mu-'A')*3+zhong-'A']+=125099989649172;
        sum+=1125899906842623;
        return ;
    }
    if(n==1){
        a[(pre-'A')*3+mu-'A']++;
        sum++;
        return ;
    }
    Hanoi(n-1,pre,mu,zhong);
    a[(pre-'A')*3+mu-'A']++;
    sum++;
    Hanoi(n-1,zhong,pre,mu);
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n;
    cin >> n;
    Hanoi(n,'A','B','C');
    cout << "A->B:" << a[1] << "\n";
    cout << "A->C:" << a[2] << "\n";
    cout << "B->A:" << a[3] << "\n";
    cout << "B->C:" << a[5] << "\n";
    cout << "C->A:" << a[6] << "\n";
    cout << "C->B:" << a[7] << "\n";
    cout << "SUM:" << sum << "\n";
    system("pause");
    return 0;
}
全部评论

相关推荐

05-23 19:02
吉林大学 Java
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务