跳石板—牛客网

#include 
#include
#include
using namespace std;

//计算第i个的全部余数
//因为复杂度限制 所以值遍历到平方的位置
void getsum(int n, vector<int>& v) {
    for (int i = 2; i ) {
        if (n % i == 0) {
            v.push_back(i);
            //如果他是 2*2=4这种 那么就只算一个约数 如果是2*3=6 那么两个都要算入6的约数
            if (n / i != i) {
                v.push_back(n / i);
            }
        }
    }
}

int bs(int n, int m) {
    //开24个 是0~23 m为24 所以要实际要开25个
    vector<int> v(m + 1, 0);//全部置为0
    //记住这个v是全部初始化为0  v里记的是步数
    //初始位置置为1
    v[n] = 1;

    for (int i = n; i < m; i++) {
    //这里的i是第几个 而不是单纯为了循环几次
        if(v[i]==0)
        continue;

        vector<int> v2;
        getsum(i, v2);
        for (int j = 0; j < v2.size(); j++) {
            //约数+实数 k+x 小于m时 并且v中已经存在了步数  那么保留最小步数
            //2+6
            if (v2[j] + i 0)
            {
                //在2+6这个位置 选出最小步数
            v[v2[j] + i] = v[v2[j] + i] < v[i] + 1 ? v[v2[j] + i] : v[i] +1;
            }
            //如果这里没步数 那么就是0+1  因为里面全部初始化为0
            else if (v2[j] + i  m)
            {
            v[v2[j] + i] = v[i]+1;
            }
        }
    }

    return v[m] == 0 ? -1 : v[m]-1;//因为开头在n的位置初始化为1 后续+1步数 多添了1个 所以要在最后-1
}

int main() {
    int n, m;
    while (cin >> n >> m) {
        cout << bs(n, m);
    }
    return 0;
}

跳石板---牛客网

Original: https://www.cnblogs.com/LonelyMoNan/p/16753987.html
Author: lemon-Breeze
Title: 跳石板—牛客网

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607379/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 请求方式

    题目如下 题目描述为请求方式,HTTP的请求方式一共有八种,读者自行去查 打开靶场如下 题目的意思需要以CTF**B为请求方式,由于平台名为CTFHUB,于是试了一下 接着抓包,推…

    Linux 2023年6月7日
    0108
  • 2021年3月-第01阶段-Linux基础-Linux系统的启动流程

    Linux系统的启动流程 理解Linux操作系统启动流程,能有助于后期在企业中更好的维护Linux服务器,能快速定位系统问题,进而解决问题。 上图为Linux操作系统启动流程 1….

    Linux 2023年6月8日
    0126
  • 设计模式——行为型设计模式

    行为型设计模式 针对对象之间的交互 解释器模式 java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此 解释器:对语言进行解释,根据不同语义来…

    Linux 2023年6月7日
    0114
  • java反射机制

    1..获取Class实例的方式 1 @Test 2 public void test3() throws ClassNotFoundException { 3 //方式一:调用运行…

    Linux 2023年6月6日
    0129
  • Timeout connecting to [localhost/127.0.0.1:9200]

    空服务启动时(或者压根没引入es相关jar包)报Timeout connecting to [localhost/127.0.0.1:9200]错误时,查看pom.xml中是否引用…

    Linux 2023年6月7日
    0149
  • 正则表达式

    基本正则表达式 元字符 . 匹配任意单个字符 [root@localhost ~]# mkdir /temp [root@localhost temp]# touch {1..9}…

    Linux 2023年6月13日
    0100
  • 常见Git命令汇总

    前言 最近,有朋友私信让我就 git &#x4F7F;&#x7528;做篇文章分享,分享一下我在日常工作中是如何使用 git的。我当场就收费两包辣条,最后讨价还价,…

    Linux 2023年6月13日
    099
  • layui实现多图上传,支持拖拽上传

    示例:支持多图上传,支持拖拽上传,下方有文件上传信息提示 html代码: <div class="layui-upload"> <div cl…

    Linux 2023年6月7日
    096
  • SQLI-LABS(Less-11、12)

    Less-11(POST-Error Based-Single Quotes-String) 打开 Less-11的页面,可以看到一个登录框,需要输入用户名和密码,由本关名字可知S…

    Linux 2023年6月6日
    089
  • python数据结构与算法(1)—时间复杂度

    一.数据结构基础 1.数据结构概念 就是一组数据在内存中的存储形式,也是对基本数据类型的一次封装 也是数据对象中数据元素之间的关系。 算法与数据结构的区别: 数据结构只是静态的描述…

    Linux 2023年6月6日
    080
  • ThinkPHP5 远程命令执行漏洞

    一、ThinkPHP介绍 轻量级框架,内部OOP和面向过程代码都存在,是国人自己开发的框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,…

    Linux 2023年6月14日
    080
  • 如何优雅的处理 accept 出现 EMFILE 的问题

    通常情况下,服务端调用 accept 函数会返回一个新的文件描述符,用于和客户端之间的数据传输 在服务器的开发中,有时会遇到这种情况:当调用 accept 函数接受客户端连接,函数…

    Linux 2023年6月13日
    097
  • linux版powershell中,tab补全,linux外部命令参数名,的模块介绍

    关键字 linux powershell pwsh 补全 complete bash zsh 摘要:linux用户的福音!在linux版powershell中,补全linux外部命…

    Linux 2023年6月14日
    091
  • 如何配置VLAN

    一、vlan的概念与作用 首先,在学习如何配置vlan时我们先要了解一下为什么要配置vlan?vlan在平常的工作中有什么作用? vlan:虚拟的划分网段 即虚拟网络,在平常的工作…

    Linux 2023年6月6日
    0161
  • 性能测试—实施流程记录

    posted @2022-06-08 17:31 尼古丁·瘾 阅读(26 ) 评论() 编辑 Original: https://www.cnblogs.com/ngd-mzl/p…

    Linux 2023年6月8日
    0122
  • docker安装zabbix

    Zabbix 为每个组件都提供了 Docker 镜像 ,作为弹性和自给自足的容器,促使加快部署和更新过程。Zabbix 组件支持 MySQL 和 PostgreSQL 数据库、Ap…

    Linux 2023年6月6日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球