当前位置: 首页 > article >正文

蓝桥杯不知道叫什么题目

小蓝有一个整数,初始值为1,他可以花费一些代价对这个整数进行变换。
小蓝可以花贵1的代价将教数增加1。
小蓝可以花费3的代价将整数增加一个值,这个值是整数的数位中最大的那个(1到9) .小蓝可以花费10的代价将整数变为原来的2倍,
例如,如果整数为16花费3将整数变为22,

又如,如果整数为22花费1将整数变为33,

又如,如果整数为23,花费10将整数为 46。
请问,如果要将整数从初始值1变为 2024,请问限少需要多代价?
 

思路:注意!!!!只能从1开始推到2024,因为其中有一个状态方程是要求取出当前数字最大数字(1~9),所以倒着写是不可行的。另外还要写一个函数取出当前数字里面的最大数字(1~9)。。记忆化搜索,正常写出所有推出状态的方程,并且每次要重置一个非常大的值比大小,每个状态方程的边界要写清楚。当x == 2024的时候返回0,完成基准情况即可。

#include<iostream>
#include<algorithm> 
using namespace std;
int mem[200000];
int Mnum(int k)
{
	int t,M = -1e6;
	while(k)
	{
		t = k % 10;
		M = max(M,t);
		k = k/10;
	}
	return M;
}
int dfs(int x)//当前为x数字 
{
	 if(x == 2024)
	 return 0;
	 int sum = 1e6;
	 if(mem[x])
	 return mem[x];

	 if(x * 2 <= 2024)
	 sum = min(sum,dfs(x*2)+10);
	 
	 if(x + Mnum(x) <= 2024)
	 sum = min(sum,dfs(x+Mnum(x))+3);
	 
	 if(x + 1 <= 2024)
     sum = min(sum,dfs(x+1)+1);
     
	 mem[x] = sum;
	 return sum;
}
int main(void)
{
	cout << dfs(1);
	return 0;
}


http://www.kler.cn/a/411997.html

相关文章:

  • hive的存储格式
  • 使用client-go在命令空间test里面对pod进行操作
  • 工作问题总结4
  • Spring |(五)IoC/DI的注解开发
  • 手搓人工智能—聚类分析(下)谱系聚类与K-mean聚类
  • rabbitmq 启动异常问题排查
  • 微信小程序加载商品首页数据时,页码没有更新,老是page=1。
  • LAMP环境的部署
  • 【大数据学习 | Spark-Core】RDD的缓存(cache and checkpoint)
  • 网络安全防范课后参考答案
  • vue3 发送 axios 请求时没有接受到响应数据
  • laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings);
  • [每日一氵] Git LFS 用法
  • 【SQL Server】华中农业大学空间数据库实验报告 实验五 索引
  • 2、Python变量定义及数据类型深度解析
  • 电话机器人如何提高工作效率?
  • 网络知识1-TCP/IP模型
  • 【作业九】RNN-SRN-Seq2Seq
  • 如何提取某站 MV 视频中的音乐为 MP3 音频
  • C# 在Word文档模板中,按照占位符插入文字或图片
  • SQL server 计算同比和环比
  • PHP 类型比较
  • Qt上位机编程命名规范
  • 数字信号处理实验报告六:数字信号处理在多音频拨号系统中的应用
  • SpringBoot3与JUnit5集成测试
  • 100个python经典面试题详解(新版)