第一次写发现超时了,于是选择了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; }