题目链接:点击打开链接
关键词:dp
int minSteps(int n)
{
vector<int> dp(n+1,1024);
dp[1]=0;
for(int i=2;i<=n;++i)
{
for(int k=1;k*k<=i;++k)
{
if(i%k==0)
dp[i]=min(min(dp[k]+i/k,dp[i/k]+k),dp[i]);
}
}
return dp[n];
}
本文介绍了一个使用动态规划解决的问题:寻找复制和粘贴操作达到指定字符数所需的最少步骤。通过一个具体的C++实现示例,展示了如何初始化动态规划数组并逐步更新以找到最优解。
题目链接:点击打开链接
关键词:dp
int minSteps(int n)
{
vector<int> dp(n+1,1024);
dp[1]=0;
for(int i=2;i<=n;++i)
{
for(int k=1;k*k<=i;++k)
{
if(i%k==0)
dp[i]=min(min(dp[k]+i/k,dp[i/k]+k),dp[i]);
}
}
return dp[n];
}
218

被折叠的 条评论
为什么被折叠?