此題是一道簡單的遞歸 此題是一道遞歸運算題,這題又是一道漢諾塔問題!!!只要了解其規律,呵呵,你就可以很快AC了!!
?
?????????????????????????????????????????????????
這是一般的漢諾塔問題的解題方法照片!!!弄了好久也沒弄好本題的照片,所以只好盡量用語言描述了!哈!
此題只是在原型上略微修改一下
移動方法如下:
第1步:初始狀態
?
第2步:把上面的n-1個盤移到第3號桿上
?
第3步:把第n個盤從1移到2
?
第4步:把前n-1個從3移到1,給第個盤讓路
?
第5步:把第n個盤從2移到3 所以便有以下規律:
f(n)=3*f(n-1)+2;
最后注意一下要用64位整數即可!!即__int64,同時輸出要用 printf("%I64d\n",f(n))!
?祝你成功AC!!!
?
#include<iostream>
using namespace std;
int main()
{
?int n;
?__int64 f(int m);
?while(cin>>n)
?{
? printf("%I64d\n",f(n));
?}
?return 0;
}
?__int64 f(int m)
?{
? if(m==1)
???? ? return 2;
using namespace std;
int main()
{
?int n;
?__int64 f(int m);
?while(cin>>n)
?{
? printf("%I64d\n",f(n));
?}
?return 0;
}
?__int64 f(int m)
?{
? if(m==1)
???? ? return 2;
else
? ? return (3*f(m-1)+2);
?}
? ? return (3*f(m-1)+2);
?}