跳石板—牛客网

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

大家都在看

  • K8S-kubeadm安装

    K8S-kubeadmin快速安装K8S集群 1.IP规划 节点 IP 组件 MASTER01(4C/6G,cpu核心数大于2) 192.168.80.20 docker、kube…

    Linux 2023年6月13日
    0107
  • Android(Java)控制GPIO的方法及耗时分析

    前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO。实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Androi…

    Linux 2023年6月7日
    091
  • 监控域名,证书过期时间

    bash;gutter:true;</p> <h1>!bin/bash</h1> <p>date_Now=$(date +%Y%m%…

    Linux 2023年6月7日
    092
  • Centos7 ifconfig中没有ens33

    在使用Secure CRT连接虚拟机连接不上,可能之前虚拟机关闭不当 登到虚拟机的中断使用ifconfig发现没有ens33 猜测是CentOS图形管理中的NetworkManag…

    Linux 2023年6月13日
    0157
  • redis配置systemctl

    [Unit]Description=redisAfter=network.target [Service]Type=forkingPIDFile=/var/run/redis_63…

    Linux 2023年5月28日
    0111
  • nginx-http响应头安全策略

    从nginx的http头文件的方面,利用参数设置开启浏览器的安全策略,来实现相关的安全机制。 add_header Content-Security-Policy "de…

    Linux 2023年6月6日
    0104
  • VR(虚拟现实)开发资源汇总

    Daydream Gear VR Algorithm ATW Bluetooth Blog Latency Tools Touch Unity Qualcomm EGL Origi…

    Linux 2023年6月7日
    093
  • KETTLE使用中的错误集锦

    1.违反唯一主键约束条件:问题是表中有俩个主键,将备用主键替换成真正的主 键或者是没有对数据做出处理加这句话and cft.DEL_FLAG!=’1’或者要…

    Linux 2023年6月13日
    0171
  • podman对容器映像签名和分发

    熟悉podman 如何使用 Podman 对容器映像进行签名和分发 熟悉podman 此示例容器将运行一个非常基本的 httpd 服务器,该服务器仅为其索引页提供服务 [root@…

    Linux 2023年6月7日
    097
  • 使用Supervisor监控mysql

    监控文件配置: [program:mysql] ; 管理的子程序名字,要和项目有关联,不能乱写command=/usr/local/mysql/bin/mysqld_safe &#…

    Linux 2023年6月6日
    057
  • 蓝牙BLE传输性能及延迟分析

    BLE传输性能主要受以下几个因素影响:操作类型,Connection Interval,每个Connection Event内发送的帧数、每一帧数据的长度。具体参见如下链接: ht…

    Linux 2023年6月7日
    0159
  • 关于程序员成长的一些思考

    任何一名技术大神都是从小菜鸟开始的,这应该无一例外。当然,有的人成长的快,有的人成长得慢,有的人坚持下来,有的人半途而废。如果我们在成长的过程中能掌握一些方法,也许能少走一些弯路。…

    Linux 2023年6月6日
    0102
  • Linux Netlink学习笔记

    Netlink是用户程序与内核通信的socket方法,通过Netlink可以获得修改内核的配置,常见的有获得接口的IP地址列表、更改路由表或邻居表。旧版本的内核提供很多从内核获取信…

    Linux 2023年6月6日
    0114
  • python中的cls和self区别

    self:Always use self for the first argument to instance methods self是作为类进行实例化传递的第一个参数,也就是我…

    Linux 2023年6月14日
    097
  • vim分屏功能总结

    vim的分屏功能总结起来,基本都是ctrl+w然后加上某一个按键字母,触发一个功能。(1)在shell里打开几个文件并且分屏:vim -On file1 file2 ……

    Linux 2023年6月14日
    098
  • djnago-filter用法

    django-filter用法 集成drf 不指定字段的过滤参数,那么该字段就默认为exact,精准匹配自定义filter文件内 from django_filters impor…

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