半数单集问题

来源:互联网 发布:mysql dump 导出表 编辑:程序博客网 时间:2024/05/22 14:28
#include "iostream"using namespace std;int a[100];int comp(int n){       int ans = 1;    if(a[n]>0)         return a[n];    for(int i=1; i<=n/2; i++)    {        ans += comp(i);        if(i>10 && 2*i/10 <= i%10) //如果是两位数,而且十位比个位的一半小,则产生重复元素            ans -= a[i/10];  //减去重复元素    }    a[n] = ans;    return ans;}int main(){    int n;    cout << "输入一个自然数:";     cin >> n;    int set = comp(n);    cout << "产生的半数集个数为:" << set << endl;    return 0;} 

这里写图片描述

0 0