递推 hdu 2064
z[n] n个盘子从1到3次数
先想2个的时候 1->2 2->3 1->2 3->2 2->1 2->3 1->2 2->3
显然 要先把上面n-1 先移动到3 然后 1->2 然后 3->1 然后 2->3 然后 1->3
其实就是 在z[n]=3*z[n-1]+2;
如果整理一下 就可以o(1);
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; typedef long long ll; #define MAXN 105 ll z[MAXN]; int main() { int n; while(scanf("%d",&n)!=EOF) { ll ans=1; for(int i=1;i<=n;i++) ans*=3; printf("%lld\n",ans-1); } return 0; }
posted on 2016-12-30 18:40 HelloWorld!--By-MJY 阅读(77) 评论(0) 编辑 收藏 举报