hdu 1207 汉诺塔

#include<stdio.h>
#include<math.h>
#define M 99999999
void main()
{

    int
i,n,x,min,f[100];
    f[1]=1;
    f[2]=3;
    for
(i=3;i<=65;i++)
    {

        min=M;
        for
(x=1;x<i;x++)
            if
(2*f[x]+pow(2,i-x)-1<min)
                min=2*f[x]+(int)pow(2,i-x)-1;
            f[i]=min;
    }

    while
(scanf("%d",&n)!=EOF)
        printf("%d\n",f[n]);
}

posted @ 2013-04-30 12:58  galaxy77  阅读(132)  评论(0编辑  收藏  举报