今天组队比赛时遇到了汉诺塔的题,开始时以为很难,但是仔细看题时,想到了曾今在杭电上做个一题,却发现是水题一道,直接一个打表!
TJU
1731. Strange Towers of Hanoi
#include<stdio.h>
int main()


{

int a[13]=
{0,1,3,5,9,13,17,25,33,41,49,65,81};
for(int i=1;i<=12;i++)
printf("%d\",a[i]);
}
真正的题目还是杭电上的
http://acm.hdu.edu.cn/showproblem.php?pid=1207
#include<stdio.h>
#include<math.h>
int main()


{
long a[65];
a[1]=1;
long i,j,n,m,r;
for(i=2,j=1,r=1,m=2;i<66;i++,j++)
if(j<=m)
a[i]=a[i-1]+pow(2,r);

else
{
m++;
j=1;
r++;
a[i]=a[i-1]+pow(2,r);
}

while(scanf("%d",&n)==1)
{
printf("%d\n",a[n]);
}
}
规律:
a[1]=1;
a[2]=a[1]+2;a[3]=a[2]+2;(2个加2^1)
a[4]=a[3]+4;a[5]=a[4]+4;a[6]=a[5]+4;(3个加2^2);
…………………………………………(4个加2^3);
O(∩_∩)O~
posted on 2009-05-18 18:32
zhoubaozhong 阅读(921)
评论(0) 编辑 收藏 引用