IGKTOA 题解分享 · 2024/4/12
数的计算 - 题解
多写几组数据就很好写出递推公式了 ``` #include<bits/stdc++.h> #define endl '\n' #define int long long using namespace std; signed main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin>>n; vector<int> dp(1000+1,0); dp[1]=1; for(int i=2;i<=1000;i++){ if(i%2==1){ dp[i]=dp[i-1]; }else{ dp[i]=dp[i-1]+dp[i/2]; } } cout<<dp[n]; return 0; } ```
查看全文
0 0 1 2
星河漫步vphyc 题解分享 · 2025/3/30
数的计算 - 题解
``` #include <bits/stdc++.h> using namespace std; const int N=1010; int n; int mem[N]; int f(int x){ if(mem[x]) return mem[x]; int t=x/2; int sum=1; for(int i=1;i<=t;i++){ sum+=f(i); } return mem[x]=sum; } int main(){ cin>>n; cout<<f(n); return 0; } ```
查看全文
0 0 0 6
nocc 题解分享 · 2024/4/12
数的计算 - 题解
记忆化搜索 ```cpp #include <iostream> using namespace std; const int N = 1010; int n; int dp[N]; int f(int x) { if (dp[x]) return dp[x]; int sum = 1; for (int i = 1; i * 2 <= x; i++) { sum += f(i); } return dp[x] = sum; // 把之前得到的解决方案保存起来, 减少递归次数 } void solve() { cin >> n; cout << f(n) << endl; } int main() { solve(); return 0; } ```
查看全文
0 0 0 2