半数集1

long a[1000];
long comp(int n);

 

//(2) 改进的算法,用数组存储已经计算过的结果,避免重复计算

int main()
  
  int n;

  while (cin>>n)//^Z的效果
  {
   memset(a,sizeof(a),0);//清零了???
   a[1]=1;
   cout<<comp(n)<<endl;
  }
  return 0;
 }

 

 

 long comp(int n)
  
 
 long ans=1;
 if(a[n]>0)

   return (a[n]);

 else for( int i=1;i<=n/2;i++)
      ans+=comp(i);


  a[n]=ans;//注意
  return ans;
 


 }
 

原文地址:https://www.cnblogs.com/big4panda/p/6417616.html