大意:给你一个递推式,求前N项中最大的那一项
算法:先把这个数列求出来,再动态规划一下……
 1 #include  < stdio.h > ;
 2 #include  < string .h > ;
 3
 4 long  a[ 100010 ];
 5 long  b[ 100010 ];
 6 int  main() {
 7long i;
 8memset(a,0,sizeof(a));
 9memset(b,0,sizeof(b));
10a[0]=0; a[1]=1;
11for (i=2;i<100000;i++)
12if (i & 1==1) a[i]=a[i>>1]+a[(i>>1)+1];
13         else a[i]=a[i>>1];
14for (i=1;i<100000;i++)
15if (b[i-1]<a[i]) b[i]=a[i];
16            else b[i]=b[i-1];
17long n,t;
18while (true)
19{
20scanf("%ld",&t);
21if (t==0break;
22printf("%ld\n",b[t]);
23}

24return 0;
25}

26