【编程题】跳石板

news2025/1/15 8:06:30

跳石板

image-20231024134712571

分析后可知

要在众多解中寻找最优解

因此用动态规划

image-20231024135345185

比如:

image-20231024135748903

4-6只需跳一步,而6-8也只需一步,因此在刚才跳了一步的基础上再加1

image-20231024140316984

8到10一步,8到12一步,9到12一步,8-10-12两步,因此到12位置时,记下最小需要到达的步数和一步,那么累加就是需要三步到达12

image-20231024140829580

完整过程

#define _CRT_SECURE_NO_WARNINGS 1
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <math.h>
using namespace std;
void get_divnum(int num, vector<int>& v) {
    for (int i = 2;i <= sqrt(num);++i)
    {
        if (num % i == 0)
        {
            v.push_back(i);
            if (num / i != i)
            {
                v.push_back(num / i);
            }
        }
    }
}
int jumpStone(int n, int m) {
    //设定跳到此区间内的石板时所需要的步数
    //默认为不可到达,设置为整型最大值
    vector<int> step(m + 1, INT_MAX);
    step[n] = 0;
    for (int i = n; i < m; ++i)
    {
        if (step[i] == INT_MAX) {
            continue;
        }

        vector<int> div_num;//存约数
        get_divnum(i, div_num);

        for (int j = 0; j < div_num.size(); ++j)
        {
            if (i + div_num[j] <= m && step[i + div_num[j]] != INT_MAX)
            {
                step[i + div_num[j]] = step[i + div_num[j]] < step[i] + 1 ? step[i + div_num[j]] : step[i] + 1;
            }
            else if (i + div_num[j] <= m)
            {
                step[i + div_num[j]] = step[i] + 1;
            }
        }
    }
    return step[m] == INT_MAX ? -1 : step[m];
}
int main() {
    int n, m, min_step;
    while (cin >> n >> m) { // 注意 while 处理多个 case
        min_step = jumpStone(n, m);
        cout << min_step;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")
    cout << min_step;
}
return 0;

}
// 64 位输出请用 printf(“%lld”)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion 绘画入门教程(webui)

文章目录 一、前言二、做出的效果三、SD使用流程1、大模型2、关键字3、调参数 一、前言 随着mj和sd绘画软件发布之后&#xff0c;AI绘画开始爆火&#xff0c;很多小伙伴已经挖掘出很多的玩法&#xff0c;哪怕最基础的AI美女、AI壁纸、真人漫改等等都赚的盆满钵满&#xff0c;当…

Nginx 配置详解

官网&#xff1a;http://www.nginx.org/ 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今&#xff0c;凭借开源的力量&#xff0c;已经接近成熟与完善。 Nginx功能丰富&#xff0c;可作为HTTP服务器&#xff0c;也可作为反向代理服务…

Satoshivm一文科普,手把手教你交互(bitget 钱包)

什么是 SatoshiVM&#xff1f; SatoshiVM 是一种去中心化的第 2 层解决方案&#xff0c;创新地将比特币网络的强大安全性和价值稳定性与以太坊虚拟机 (EVM) 的高级可编程性和灵活性相结合。 SatoshiVM 是区块链领域的一个突出功能&#xff0c;支持使用原生 BTC 作为 Gas&#x…

防火墙——计算机网络

前述基于密码的安全机制不能有效解决以下安全问题&#xff1a; 用户入侵&#xff1a; 利用系统漏洞进行未授权登录&#xff1b; 授权用户非法获取更高级别权限等。 软件入侵&#xff1a; 通过网络传播病毒、蠕虫和特洛伊木马。 拒绝服务攻击等。 解决方法&#xff1a; 防火墙&a…

Leetcode刷题笔记题解(C++):203. 移除链表元素

思路&#xff1a;不同的情况出现了&#xff0c;就是第一个节点要是为等于val的节点&#xff0c;可以新建一个节点&#xff0c;并next指向head&#xff0c;这样就可以遍历新的链表来删除节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* L…

数据库应用:kylin 部署 达梦数据库DM8

目录 一、实验 1.环境 2.部署前规划 3.部署达梦数据库DM8 4.创建数据库及数据库事例管理 5.达梦数据库的基本操作 二、问题 1.xhost命令报错 2.执行安装程序DMInstall.bin 报错 3.解压安装程序报错 4.安装程序找不到文件 5.图像化界面打不开 6.安装内存太小 7.打开…

提升竞争力!攻读在职硕士为职业发展加冕——社科院与杜兰大学金融管理硕士

在现如今竞争激烈的职场环境中&#xff0c;不断提升自身的竞争力是每个职场人士都面临的重要任务。攻读在职硕士学位成为越来越多人实现个人职业发展目标的首选方式之一。特别是社科院与杜兰大学合作开设的金融管理硕士项目&#xff0c;为那些希望在金融行业取得突破的职业人士…

vue3实现瀑布流布局组件

先看效果图 直接上代码 utils.js // 用于模拟接口请求 export const getRemoteData (data 获取数据, time 2000) > {return new Promise((resolve) > {setTimeout(() > {console.log(模拟获取接口数据, data)resolve(data)}, time)}) }// 获取数组随机项 export…

npm ERR! code CERT_HAS_EXPIRED:解决证书过期问题

转载&#xff1a;npm ERR! code CERT_HAS_EXPIRED&#xff1a;解决证书过期问题_npm err! code cert_has_expired npm err! errno cert-CSDN博客 npm config set registry http://registry.cnpmjs.org npm config set registry http://registry.npm.taobao.org

【洛谷题解】P1303 A*B Problem

题目链接&#xff1a;A*B Problem - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;高精度 题意&#xff1a; 分析&#xff1a;直接套用模版即可 AC代码&#xff1a; #include<bits/stdc.h> using namespace std; char n[1000000],m[1000000]; int a[1000…

《C++ Primer Plus》《4、复合类型》

文章目录 前言&#xff1a;1 数组1.1数组的初始化规则1.2 C11的数组初始化方法 2 字符串2.1 拼接字符串常量2.2在数组中使用字符串2.3 字符串输入2.4 每次读取一行字符串输入2.5 混合输入字符串和数字 3 string类简介3.1 C11字符串初始化3.2 赋值、拼接、附加3.3 string类的其他…

神经网络基础——激活函数的选择、参数初始化

一、神经网络 1、神经网络 人工神经网络&#xff08;Artificial Neural Network&#xff0c;即ANN&#xff09;也简称为神经网络&#xff08;NN&#xff09;是一种模仿生物神经网络结构 和功能的计算模型。 2、基本部分 输入层&#xff1a;输入 x 输出层&#xff1a;输出 y 隐…

计算机组成原理----计算机系统

目录 1.计算机的硬件和软件 2.硬件的发展 3.软件的发展 4.计算机硬件的基本组成 &#xff08;1&#xff09;早期冯诺依曼机的结构 &#xff08;2&#xff09;现代计算机的结构 5.各硬件的工作原理 &#xff08;1&#xff09;主存储器 &#xff08;2&#xff09;运算器…

01 Qt自定义风格控件的基本原则

目录 1.继承原生控件 2.组合原生控件 3.仿写原生控件 PS:后续将继续分享开发实践中各类自定义控件的方法、思路以及组件库 1.继承原生控件 关键字&#xff1a;继承、paintEvent 这里想说的是&#xff0c;Qt的Gui框架在封装原生控件的同时&#xff0c; 也为开发者提供了各…

opencv鼠标操作与响应

//鼠标事件 Point sp(-1, -1); Point ep(-1, -1); Mat temp; static void on_draw(int event, int x, int y, int flags, void *userdata) {Mat image *((Mat*)userdata);if (event EVENT_LBUTTONDOWN) {sp.x x;sp.y y;std::cout << "start point:"<<…

【面试题】谈谈MySQL的索引

索引是啥 可以把Mysql的索引看做是一本书的目录&#xff0c;当你需要快速查找某个章节在哪的时候&#xff0c;就可以利用目录&#xff0c;快速的得到某个章节的具体的页码。Mysql的索引就是为了提高查询的速度&#xff0c;但是降低了增删改的操作效率&#xff0c;也提高了空间…

HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化

Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 概述 ObjectLink和Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步&#xff1a; 被Observed装饰的类&#xff0c;可以被观察到属性的变化&#xff1b;子组件中ObjectLink装饰器装饰的状…

两分钟秒懂Android控件设置

导言 本文从整体到局部,从常用布局(layout)到控件的设置,层层递进,一定要从前往后依次看 目录 1.常用布局方式 1.1 ConstraintLayout 约束布局 1.2 LinearLayout 线性布局 1.3 TableLayout 表格布局 1.4 GridLayout 瀑布布局 2.关于控件属性整合 2.1 放置位置 2.2 如…

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备&#xff0c;用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析&#xff0c;并探讨其适用的应用场景。 1. 单桥逆变器 优点&#xff…

CAN FD一致性测试:便捷、高效的自动化测试系统

后起之秀——CAN FD&#xff1a;随着各个行业的快速发展&#xff0c;消费者对汽车电子智能化的诉求越来越强烈&#xff0c;这使得整车厂将越来越多的电子控制系统加入到了汽车控制中&#xff0c;且在传统汽车、新能源汽车、ADAS和自动驾驶等汽车领域中也无不催生着更高的需求&a…