第一次写发现超时了,于是选择了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;
}
京公网安备 11010502036488号