zoukankan      html  css  js  c++  java
  • P1028 [NOIP2001 普及组] 数的计算

    题目传送门

    一、深度优先搜索

    #include <bits/stdc++.h>
    
    using namespace std;
    int n;
    
    //毫不意外,只通过了5个测试点,TLE了15个点~
    int dfs(int x) {
        //1就没法继续分了,同时,由于题目说:原数列不做任何修改就直接统计为一种合法数列。所以返回1
        if (x == 1) return 1;
    
        //不是1,可以分
        int ans = 1;//它自己就是一种
        //在它后面不断加入[1,x/2]的数字,都可以增加方法数量
        for (int i = 1; i <= x / 2; i++) ans += dfs(i);
        //返回方法数量
        return ans;
    }
    
    int main() {
        //输入
        cin >> n;
        //计算并输出
        cout << dfs(n) << endl;
        return 0;
    }
    

    二、记忆化搜索

    #include <bits/stdc++.h>
    
    using namespace std;
    int n;
    const int N = 1010;
    int f[N];
    
    int dfs(int x) {
        //存在就返回
        if (f[x]) return f[x];
    
        //1就没法继续分了,同时,由于题目说:原数列不做任何修改就直接统计为一种合法数列。所以返回1
        if (x == 1) return f[x] = 1;
    
        //不是1,可以分
        int ans = 1;//它自己就是一种
        //在它后面不断加入[1,x/2]的数字,都可以增加方法数量
        for (int i = 1; i <= x / 2; i++) ans += dfs(i);
        //返回方法数量
        return f[x] = ans;
    }
    
    int main() {
        //输入
        cin >> n;
        //计算并输出
        cout << dfs(n) << endl;
        return 0;
    }
    

    三、递推

    #include <bits/stdc++.h>
    
    using namespace std;
    const int N = 1010;
    int f[N];
    int n;
    
    int main() {
        //输入
        cin >> n;
    
        //边界条件:1
        f[1] = 1;
    
        for (int i = 2; i <= n; i++) {
            //任何数字,独立成为一个
            f[i] = 1;
            //所有从1到它的一半的,都可以增加进来
            for (int j = 1; j <= i / 2; j++) f[i] += f[j];
        }
        //总个数
        cout << f[n] << endl;
        return 0;
    }
    
  • 相关阅读:
    html和css的重难点知识
    走过的K8S坑
    K8S的安装
    java 工程编码格式由GBK转化成utf-8 (转载)
    spring mvc 后端获得前端传递过来的参数的方法
    表格组件---bootstrapTable
    Spring mvc +ajax 发送邮件
    通过Httpclient工具类,实现接口请求
    spring mvc框架+ ajax实现 文件上传
    element-ui中表格自定义排序
  • 原文地址:https://www.cnblogs.com/littlehb/p/15596621.html
Copyright © 2011-2022 走看看