当前位置:网站首页>650.只有两个键的键盘(动态规划)
650.只有两个键的键盘(动态规划)
2022-07-30 05:39:00 【Linke66】

解题思路:动态规划
对于一个数n,他需要进行多少次的复制全部和粘贴的操作,比如25个A,最大能被25整除(比25小的数中)2的数是5,那么我需要复制5个A粘贴5次就可以得到25个A,那么怎么得到5个A,最大能被5整除(比5小的数中)的数是1,因此只能通过复制一个A并粘贴5次。
假设 n%m=0,n/m=min_val; m的范围[1,n-1];
那么动态转移方程为:
dp[n]=dp[m]+(min_val-1)+1;
dp[m]代表要得到m个A最少需要多少次操作;
min_val-1代表需要对m个A进行粘贴的次数;
最后+1是复制m个A的次数。
class Solution {
public:
int minSteps(int n) {
//找[1,n-1]最大能被n整除的
//16/8=2;那么就是dp[16]=dp[8]+2-1;dp[8]=dp[4]+2-1;dp[4]=dp[2]+2-1;dp[2]=dp[1]+2-1;
vector<int>dp(n+1);
dp[0]=0;
dp[1]=0;
for(int i=2;i<=n;++i){
int min_val=INT_MAX;
int index;
for(int j=i-1;j>=1;--j){
if(i%j==0){
int val=i/j;
if(val<min_val){
min_val=val; //最少的粘贴次数
index=j; //在哪个位置粘贴
}
}
}
dp[i]=dp[index]+min_val-1+1;
}
return dp[n];
}
};
边栏推荐
猜你喜欢

SRA数据下载方法总结

Different lower_case_table_names settings for server ('1') and data dictionary ('0') solution

解决没有配置本地nacos但是一直发生localhost8848连接异常的问题

Learn FPGA from the underlying structure (6) ---- Distributed RAM (DRAM, Distributed RAM)

934.最短的桥(广度优先搜索)

分布式事务之 Seata框架的原理和实战使用(三)

2022 SQL big factory high-frequency practical interview questions (detailed analysis)

Error: listen EADDRINUSE: address already in use 127.0.0.1:3000

MySQL fuzzy query performance optimization

torch.load()
随机推荐
MySql fuzzy query Daquan
numpy中np.inf函数的用法讲解
131.分割回文串
453.最小操作数使数组元素相等
“tensorflow.keras.preprocessing“ has no attribute “image_dataset_from_directory“
MySQL stored procedure
np.where()用法
4、nerf(pytorch)
瑞吉外卖项目:新增菜品与菜品分页查询
torch.load()
MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
How is crawler data collected and organized?
Error: npm ERR code EPERM
"Hou Lang" programmer version, a speech dedicated to a new generation of programmers, He Bing's "Hou Lang" speech imitation show
4461. 范围分区(Google Kickstart2022 Round C Problem B)
81.搜索旋转排序数组II(数组旋转后二分查找)
MySql模糊查询大全
cross_val_score的用法
分布式事务之 Seata框架的原理和实战使用(三)
The difference between asyncawait and promise