一本通1316 数的计数

复制代码
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <map>
#include <queue>
#include <set>
#include <iterator>
#include <vector>
#define maxn 10000005
typedef long long ll;
using namespace std;
int n;

/*
 普通递归时间复杂度太高
 改用记忆化搜索
 */ 
//ll ans=1;
//void fun(int n){
//    if(n/2==0){
//        
//        return;
//    }else{
//        for(int i=1;i<=n/2;i++){
//            ans++;
//        //    cout<<i<<endl;
//            fun(i);
//        }
//    }
//}
int h[1001]; 
void fun(int n){
    if(h[n]!=-1) return;
    h[n]=1;
    for(int i=1;i<=n/2;i++){
        fun(i);
        h[n]=h[n]+h[i];
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        h[i]=-1;
    }
    fun(n);
    cout<<h[n]; 
    return 0;
}
复制代码

 

posted @   lwx_R  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示