半数集单集


# include <iostream.h>
# include "stdio.h"
# include "string.h"//memset 库函数

//半数单集合算法

long  mm[1000];

long  ff(int num)
{
    long  pc = 1;
    if( mm[num] > 0 )   return mm[num];
    else
 {
        for(int i = 1; i <= num/2; i++)
  {
            pc += ff(i);
  if((i>10)&&(2*(i/10)<=i%10)) pc-=mm[i/10];
  }

        mm[num] = pc;
        return pc;
     
}

int main()
{
    int num;
 
    printf("\n------半数单集合算法-------\n");
 while(cin>>num)
 {

    memset(mm,sizeof(mm),0);
    mm[1] = 1;

    cout<<ff(num)<<endl;
 }

    return 0;
}

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