跳石板—牛客网

#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)

大家都在看

  • 嵌入式软件开发之程序架构设计-任务调度

    1 前言 在嵌入式MCU软件开发过程中,程序任务调度架构的搭建尤为重要,直接关系到该程序能支持多少功能(随着功能越多系统响应能力越弱,好的任务调度架构能够在保持相同的系统响应能力前…

    Linux 2023年6月7日
    0109
  • Linux下定时自动备份Docker中所有SqlServer数据库

    给出一个备份的范例 #!/bin/bash #设置mssql备份目录 folder=/var/opt/mssql/data/databack/ day=date +%Y%m%d%H…

    Linux 2023年6月14日
    0101
  • SpringSecurity 新版2.7以上 快速入门

    SpringSecurity 快速入门 1、导入依赖 org.springframework.boot spring-boot-starter-security 2、测试三种权限 …

    Linux 2023年6月7日
    096
  • 2020年12月-第02阶段-前端基础-CSS Day06

    CSS Day06 定位(position) *理解 能说出为什么要用定位能说出定位的4种分类能说出四种定位的各自特点能说出我们为什么常用子绝父相布局 *应用 能写出淘宝轮播图布局…

    Linux 2023年6月8日
    0116
  • 在线安装Docker

    安装 yum-utils 包yum install -y yum-utils 设置存储库# 官方地址(比较慢) yum-config-manager \ –add-repo \ …

    Linux 2023年6月7日
    072
  • [云计算]TCP云架构-思维导图

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/Skybiubiu/p/16276893.htmlAut…

    Linux 2023年6月13日
    077
  • 我的第一个博客

    我就是想试一试 .阿西吧 段狗是傻逼,段狗请看右边的看板娘 posted @2020-06-22 18:56 xiao-c 阅读(17 ) 评论() 编辑 Original: ht…

    Linux 2023年6月7日
    0127
  • 数据分析业务知识

    1.电商和消费模型 所谓的电商和消费模型是以商品的交易、零售、购买搭建而起。包括客单价、复购率、回购率、退货率、购物篮大小、进销存等商品概念。 2.市场营销模型 市场营销模型是以传…

    Linux 2023年6月6日
    0114
  • Windows通过命令行共享文件

    基本语法: 比如: 与域中的每个人共享文件夹E:\Documents并授予完全权限 如果允许多个用户访问共享,则可以限制同时访问共享的用户数量。这将防止对系统的性能影响。以下命令将…

    Linux 2023年6月8日
    0113
  • Linux驱动编程1——内核编译

    1.安装必要的内核开发包,包括gcc、make、libncurses-dev。 $ apt-get install gcc make libncurses-dev 2.$ make…

    Linux 2023年6月8日
    081
  • 【原创】linux设备模型之kset/kobj/ktype分析

    背 景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. &#8211…

    Linux 2023年6月8日
    0102
  • Git详细使用流程

    初始化git仓库 git init 执行命令后文件夹下将会在执行命令路径下生成.git隐藏文件上传该路径下的所有内容到暂存区 git add . 通常项目中都有read.me,创建…

    Linux 2023年6月7日
    097
  • JAVA反射机制详解

    作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 何为反射? 实例的创建 .cl…

    Linux 2023年6月6日
    0129
  • 面试题目汇总

    目录: 1、数字数组数字数组2、字符串字符串3、链表 链表4、二叉树二叉树 5、堆栈 堆栈 posted @2019-12-11 20:35 风御之举 阅读(63 ) 评论() 编…

    Linux 2023年6月13日
    082
  • NoteOfMySQL-07-索引

    1. 索引概述 创建索引的目的是为了优化数据库的查询速度,不添加索引的情况下需要遍历所有数据才能进行删、查、改等操作。 2. 索引存储类型 存储类型 支持的存储引擎 B型树(BTR…

    Linux 2023年6月14日
    081
  • redis如何设置密码

    密码设置这里简单介绍一下redis如何设置密码redis密码设置有两种方式,一种需要重启redis服务,一种不需要重启redis服务。 首先,介绍一下需要重启redis服务的设置方…

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