还没测试代码能不能通过。
主要思想:
首先把第一个柱子上N-1个移动到第三个上,然后最大的移动到第二个柱子上,然后N-1个再移动回到第一个,最大的移动到第三个,然后剩下N-1移动到第三个。
也就是 2+hannuota(n-1)*3。
N=1时是2次。剩下的递归求解。
之前用的int错了!!!
改成long long AC!
#include<cstdio> #include<iostream> #include<string> #include<cstring> #include<cmath> #include<stdlib.h> #include<algorithm> #include<vector> #include<queue> #include<stack> using namespace std; long long hannuota(long long a) { if(a==1) return 2; else { return hannuota(a-1)*3+2; } } int main() { long long n; while(cin>>n) { cout<<hannuota(n)<<endl; } return 0; }