返回题解分享
讨论 / 题解分享/ 帖子详情

数的计算 - 题解

记忆化搜索



#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 喜欢 4 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!