伪原创网站,国内购物平台都有哪些,游戏网站建设赚钱,wordpress响应式主题制作教程【问题描述】 小蓝有一个整数#xff0c;初始值为 1 #xff0c;他可以花费一些代价对这个整数进行变换。 小蓝可以花费 1 的代价将整数增加 1 。 小蓝可以花费 3 的代价将整数增加一个值#xff0c;这个值是整数的数位中最大的那个#xff08;1 到 9#xff09;。 小蓝可… 【问题描述】 小蓝有一个整数初始值为 1 他可以花费一些代价对这个整数进行变换。 小蓝可以花费 1 的代价将整数增加 1 。 小蓝可以花费 3 的代价将整数增加一个值这个值是整数的数位中最大的那个1 到 9。 小蓝可以花费 10 的代价将整数变为原来的 2 倍。 例如如果整数为 16花费 3 将整数变为 22 。 又如如果整数为 22花费 1 将整数变为 23 。 又如如果整数为 23花费 10 将整数变为 46 。 请问如果要将整数从初始值 1 变为 2024请问最少需要多少代价 【答案提交】 这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数填写多余的内容将无法得分。 #include iostream
#include algorithm
#include cstringusing namespace std;int max_digit(int n)
{int res0;while(n){resmax(res,n%10);n/10;}return res;
}//分离数位返回最大值
int dp[5000];
int main()
{//dp[n]花费// n变化的值memset(dp,0x3f,sizeof dp);dp[1]0;//初始条件dpmaxfor(int i1;i2050;i){//反复遍历更新取各自最小值即为最小花费//逻辑命题dp[i1]min(dp[i1],dp[i]1);// dp0 1 2 3 ... // n1 2 3 4 ...//花费 1累加即可//确定为dp[2]1dp[imax_digit(i)]min(dp[imax_digit(i)],dp[i]3);// dp0 3/1 6/3 ... // n1 2 4 ...//确定为dp[2]1更新dp[2*i]min(dp[2*i],dp[i]10);//花费 10//0 10/1/3 ...//1 2 4 8 16//确定为dp[2]1更新}for(int i0;i2025;i) coutdp[i] ;//调试打印代码coutendldp[2024]endl;return 0;
}