zoukankan      html  css  js  c++  java
  • 【题解】数的计数

    题目描述

    我们要求找出具有下列性质数的个数(包含输入的自然数n):

    先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:

    l、不作任何处理;

    2、茬它的左边加上一个自然数,但该自然数不能超过原数的一半;;

    3、加上数后,继续按此规则进行处理,直到不能再而 自然数为止。

    例如输入6,则符合条件的数有6、16、26、36、126、136。

    输入输出格式

    输入格式:

    一行,即一个自然数n(1≤n≤1000)。

    输出格式:

    一行,即满足条件的数的个数。

    输入输出样例

    输入样例:
    6
    输出样例:
    6
    这道题可以硬解,就用递归做吧
    如果直接递归当然会超时,我们可以用记忆化搜索和数组计数
    先枚举从1到n/2,然后在根据枚举出的结果往下分支,每做一次,数组check[n]就会增加方案数,最后输出check[n]就是我要的结果
    具体程序如下:
    #include<iostream>
    using namespace std;
    int check[1005];
    void add(int n)
    {
        if (check[n]!=0) return;
        check[n]=1;
        for (register int i=1;i<=n/2;i++)
        {
            add(i);
            check[n]+=check[i];
        }
    }
    int main()
    {
        int n;
        cin>>n;
        add(n);
        cout<<check[n];
    }
     
  • 相关阅读:
    oc73--NSArray使用
    oc72--NSArray排序
    oc71--NSArray2
    oc70--NSArray1
    oc69--NSMutableString
    oc68--NSString
    oc67--NSString1
    驱动人生病毒处理的简单方法(20191207)
    CentOS 安装libgdi的方法
    局域网Linux机器中病毒简单处理 .aliyun.sh 挖矿病毒 ---不彻底
  • 原文地址:https://www.cnblogs.com/2021-yanghaoran/p/10716652.html
Copyright © 2011-2022 走看看