1 条题解

  • 0
    @ 2026-10-3 19:37:52

    记忆化搜索

    #include <bits/stdc++.h>
    using namespace std;
    
    int dp[1000005];
    
    int f(int n) {
    	if (dp[n] != -1) return dp[n];
    	if (n == 1) return 1;
    	int ans = 0;
    	for (int i = 1; i <= n / 2; i++) {
    		ans += f(i);
    	}
    	dp[n] = ans + 1;
    	return dp[n];
    }
    
    int main() {
    	int n;
    	cin >> n;
    	memset(dp,-1,sizeof(dp));
    	cout << f(n);
    	return 0;
    }
    
    

    信息

    ID
    1077
    时间
    1000ms
    内存
    125MiB
    难度
    普及-
    标签
    递交数
    5
    通过
    4
    上传者