【算法:3】数的计数

多么熟悉的一道题。。。NOIP2001,递归即可

但是数学思想还是很浓郁的。。。

毕竟是经过多次计算,才得来的公式。。。

递归公式

f(x)=1+f(1)+f(2)+...+f(n/2);

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>

using namespace std;

inline int read()
{
    int x=0,f=1;char ch=getchar();
    for(;!isdigit(ch);ch=getchar()) if(ch==‘-‘) f=-1;
    for(;isdigit(ch);ch=getchar()) x=x*10+ch-‘0‘;
    return x*f;
}

int n,ans;

void dfs(int m)
{
    ans++;
    for(int i=1;i<=m/2;i++) dfs(i);
    return ;
}

int main()
{
    n=read();
    dfs(n);
    printf("%d\n",ans);
}

知道了公式,这道题还用做么。。。是个人都能看懂

时间: 2024-12-31 06:38:35

【算法:3】数的计数的相关文章

数的计数——递推算法

Problem Description 我们要求找出具有下列性质数的个数(包括输入的自然数n).先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 不作任何处理: 在它的左边加上一个自然数,但该自然数不能超过原数的一半: 加上数后,继续按此规则进行处理,直到不能再加自然数为止. Input 输入有多组数据,每组数据为自然数n. Output 对于每组数据输出满足条件的数的个数. Sample Input 6 Sample Output 6 Hint 满足条件的数为6,16

1415.数的计数

1415. [NOIP2001]数的计数 ☆   输入文件:nums.in   输出文件:nums.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理 l·不作任何处理: 2·在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3·加上数后,继续按此规则进行处理,直到不能再立生自然数为止. [输入格式] 自然数n [输出格式] 满足

编程算法 - 丑数 代码(C)

丑数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 我们把只包含因子2, 3 和 5的数称作丑数. 求按从小到大的顺序的第5个丑数. 可以设置一个数组包含所需要的丑数, 依次比较乘以2, 乘以3, 乘以5的最小的数, 最后返回结果. 如第5个丑数是5, 如1, 2, 3, 4(2*2), 5均是丑数. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*ecli

数的计数

问题 C: 数的计数(number) 时间限制: 1 Sec  内存限制: 64 MB提交: 46  解决: 27[提交][状态][讨论版] 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n),先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理: (1)不作任何处理: (2)在它的左边加上一个自然数,但该自然数不能超过原数的一半:(3)加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入 一个正整数n. 输出 符合以上性质的数的个数. 样例输入 6 样

排序算法的c++实现——计数排序

任何比较排序算法的时间复杂度的上限为O(NlogN), 不存在比o(nlgN)更少的比较排序算法.如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件.计数排序就加入了限制条件,从而使时间复杂度为O(N). 计数排序的核心思想(来自算法导论):计数排序要求待排序的n个元素的大小在[0, k]之间,并且k与n在一个数量级上,即k=O(n).对于每一个输入元素x, 确定小于等于x的个数为i.利用这一信息,就可以把元素x放到输出数组的正确位置,即把元素x放到输出数组下标为i-1

【算法专题】卡特兰数(计数数列)

Catalan数列:1 1 1 2 5 14 42 132 429 1430 4862 16796 [计数映射思想] 参考:卡特兰数 - 计数的映射方法的伟大胜利 计数映射:将难以统计的数映射为另一种形式的可以统计的数. 一.入栈出栈序 n个数字,有多少种合法的入栈出栈序列?n=3时的合法序列之一:+1,-1,+1,+1,-1,-1 对于n个数字,就是要在2n个1中添加n个"+",则序列总数C(2n,n). 对于未入栈先出栈的不合法情况,在其第一次前缀和为-1时,将前面的所有符号反转,

hdu---(1280)前m大的数(计数排序)

前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10633    Accepted Submission(s): 3707 Problem Description 还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希

算法-java代码实现计数排序

计数排序 第10节 计数排序练习题 对于一个int数组,请编写一个计数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class CountingSort { 4 public int[] countingSort(int[] A, int n) { 5 countingSo

【数据结构】非比较排序的算法实现(包括计数排序、计数排序)

计数排序: #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; #include<assert.h> #include<vector> void Print(vector<int>  a) {     for (int i = 0; i < a.size(); i++)     {         cout << a[i] << &q