hdu1207 优化后的,四柱汉诺塔

来源:互联网 发布:python isdigit函数 编辑:程序博客网 时间:2024/05/22 04:37

#include<stdio.h>
#include<math.h>
#define m 99999999//其实定义在里面也可以,,定义在这因为数太大
int main()
{
        int n,i,min,j;
        int a[65];
        a[1]=1;a[2]=3;
        for(i=3;i<=65;i++)//第一次提交代码错误,因为i的最终值没有与定义的一致
          {
          min=m;
             for(j=1;j<i;j++)
              if(2*a[j]+pow(2.0,i-j)-1<min)
                min=2*a[j]+(int)pow(2.0,i-j)-1;//先打表,省去一大推时间,不然会超时
                  a[i]=min;
          }
   while(scanf("%d",&n)!=EOF)
   {
          printf("%d\n",a[n]);                      
   }
    return 0;
}
/*四柱汉诺塔的计算最少移动次数

a[1]=1;a[2]=3;
        for(i=3;i<=65;i++)
          {
             min=m;
             for(j=1;j<i;j++)
              if(2*a[j]+pow(2.0,i-j)-1<min)
                min=2*a[j]+(int)pow(2.0,i-j)-1;
                  a[i]=min;
          }*/

0 0
原创粉丝点击