算法编程(一)

基于matlab的捷联惯导算法编程(一) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 最近对惯性导航方面的问题比较感兴趣,一是基于课程学习;二是惯导是组合导航的核心,组合导航是未来的趋势,要学组合导航,先要把核心知识惯导弄明白;三是惯导的基本原理用matlab编程来实现,加深了对惯导基本原理和方法的理解。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pa.. 阅读详情

一、字符串转换成数字

    设计要求:将输入的任意字符串,转换成数字(int类型),如果转换失败则抛出异常。

    输入:"1234","+1234","-1234","1234567890","1234ab"

    输出:1234,1234,-1234,异常,异常

 

    思路:字符串有字符序列组成,每个字符都对应ASCII值,比如字符'0'为48,‘1’为49...'9'为57,你或许不知道它们对应的具体值,但是需要知道字符‘0’~‘9’的ASCII值是连续的即可。任何数组字符与‘0’字符的ASCII值的差值即可以表示其实际数字,比如:'5' - '0' = 5。代码样例如下:

    需要注意:

    1)不合法字符,不能参与计算

    2)兼顾字符串开头的“+”、“-”字符

    3)因为int数字,有最大值、最小值边界,所以计算时如果越界应该抛出异常

 

public static int parseToInteger(String value) {
    if(value == null || value.isEmpty()) {
        throw new RuntimeException("null!");
    }
    //合法前缀“-”,“+”
    int start = 0;
    char[] chars = value.toCharArray();
    char first = chars[0];
    if(first == '-' || first == '+') {
        start = 1;
    }
    boolean negative = false;
    if (first == '-') {
        negative = true;
    }

    //合法数字字符的边界
    int zero = '0';
    int nigh = '9';
    int result = 0;
    for(int i= start; i < chars.length; i++) {
        char item = chars[i];
        if(item < zero || item > nigh) {
            throw new RuntimeException("Format error!");
        }
        int current = (item - '0');
        //检测边界,int的最大值与最小值
        if(negative) {
            if(Integer.MIN_VALUE + result * 10 + current > 0) {
                throw new RuntimeException("too small!");
            }
        } else {
            if (Integer.MAX_VALUE - result * 10 < current) {
                throw new RuntimeException("too big!");
            }
        }
        result = result * 10 + current;
    }

    return negative ? 0 - result : result;

}

 

二、从二维数组中判断“目标数字”是否存在

    有一个二维数组,元素值为整型数字;二维数组的数据特征为:每行、每列元素均是按照从小到大排列,数字可能重复。问题:指定一个目标数字,请判断二维数组中是否存在此值,如果存在则返回true,否则返回false。

 

    数据模型样例解释:

1 2 8 9
2 4 9 12
4 7 10 13
6 9 11 15

 

    比如上述二维数组,每行、每列都是有序的,假如目标数字为“7”,则判定结果应该为true;如果目标数字为“20”,那么判定结果应该为false。

    思路:这个题如果作为面试题,还是稍微有些复杂,涉及到查找路径问题。二维数组的每个元素都有特征:左边与上边的元素比它小,右边和下边的元素比它大。如果“目标数字”比当前元素小,那么查找方向应该往其左边或者上边,否则就是往其右边或者下面。我们暂定,查找路径优先“左右”,然后再“上下”(具体由你选定的起始点决定)。

假如在如下数组中查找“7”是否存在,我们将二维数组的“右上角”作为起始点(起始点的选择,可以随意,只是这样编程稍微简单):
1 2 8 9
2 4 9 12
4 7 10 13
6 9 11 15

查找路径如下:
1 2 <- 8 <- 9
  \/
2 4      9      12  
  \/
4 7      10    13
6 9      11    15

 

   代码示例:

public static boolean find(int[][] arrays,int row,int column,int target) {
    try {
        int item = arrays[row][column];
        //System.out.println(item);//打印路径
        if (item == target) {
            return true;
        } else if (arrays[row][column] > target) {
            return find(arrays, row, column - 1, target);
        } else {
            return find(arrays, row + 1, column, target);
        }
    } catch (Exception e) {
        //
    }
    return false;
}

 

三、书写一段程序,将数组转换成单向链表,并反向输出此链表的数值

    考察2个点,第一:构建一个单向链表,第二:反向输出链表的数值。构建一个单向链表本身并不难,但易于出错,主要考察编程人员对数据结构的认识;难点就在于“如何反向输出单向链表的节点值”;单向链表只能向下驱动(next),所以我们即使找到了单向链表的尾部,仍然不能反向输出,因为无法“向上”查找。解题的关键可以根据实际情况而定,如果允许额外的使用其他数据结构,那么我们可以在遍历单向链表时将节点逐个加入到“栈”中(Stack,先进后出),然后使用stack的特性逐个输出即可(pop);如果不允许使用额外的数据结构,那么我们可以考虑使用“递归”的方式(原理也类似于栈)遍历。

 

    输入:1,2,3,4,5,6

    输出:6,5,4,3,2,1

    代码样例:

public static void main(String[] args) {
    int[] source = {1,2,3,4,5,6,7};
    LinkedNodes linkedNodes = buildLinked(source);
    print(linkedNodes);
}

static class LinkedNodes {
    Node header = new Node();//header仅仅为标记性节点
    Node tail;
}
static class Node {
    Node next;
    int value;
}

public static LinkedNodes buildLinked(int[] source) {
    LinkedNodes linked = new LinkedNodes();
    for(int i = 0; i < source.length; i++) {
        Node node = new Node();
        node.value = source[i];
        if(i == 0) {
            linked.header.next = node;
            linked.tail = node;
        }else {
            linked.tail.next = node;
            linked.tail = node;
        }
    }

    return linked;

}

private static void print(LinkedNodes linkedNodes) {
    if(linkedNodes == null || linkedNodes.header.next == null) {
        return;
    }
    print(linkedNodes.header.next);
}

private static void print(Node node) {
    if(node == null) {
        return;
    }
    Node current = node.next;
    if(current != null) {
        print(current);
    }
    System.out.print(node.value + ",");
}

 

四、请将指定数组构建成一个二叉树,并使用“前序”遍历打印此树(或者:中序遍历、后序遍历)

    首先需要知道如何构建一个二叉树,二叉树的特征:每个节点最多有两个子节点,分别为左右节点,对于任何一个节点,其左节点都比自己小,右节点都比自己大。

    前序、中序、后序遍历的区别,主要是“中间”节点的位置(相对于左、右节点),比如前序遍历,表示中间节点在前面(中-->左-->右),中序遍历表示当前节点在“中间”(左-->中-->右)。

 

    第一:构建二叉树,主要考察编程技能和对数据结构的认识,第二:遍历的方式,如果了解了上面的原理,遍历的编程应该水到渠成。

 

    输入:一个数组,这个数组表示一个由宽度遍历后的满二叉树(特别注意,如果不是完全二叉树,实现方式完全不同)。

    输出:前序遍历

比如输入数组:[10,6,14,4,8,12,16]

构建的二叉树应该为:
   10
   |
 6    14
 |     |
4 8  12 16

 

    第一步,先将数组构建成一个二叉树(平衡二叉树,完全二叉树),非常棘手,既然是一个“平衡、完全二叉树”,我们可以从树的节点与数组的索引位置对应关系找突破口:

树节点与数组索引对应关系:

当前节点      左节点  右节点
10(0)       6(1)   14(2)
6(1)         4(3)    8 (4)
14(2)       12(5)  16(6)

如果当前节点对应数组的索引位置为N,可以得出:
左节点:2 * N + 1
右节点:2 * (N + 1)

 

    代码样例如下:

public static void main(String[] args) throws Exception{
    int[] source = {10,6,14,4,8,12,16};

    BinaryTree tree = new BinaryTree();
    BinaryTreeNode root = new BinaryTreeNode();
    tree.root = root;
    root.value = source[0];
    buildTree(root, source, 0);
}

static class BinaryTree {
    BinaryTreeNode root;
}
static class BinaryTreeNode {
    BinaryTreeNode left;
    BinaryTreeNode right;
    int value;
}

private static void buildTree(BinaryTreeNode current,int[] source,int currentIndex) {
    int leftIndex = currentIndex * 2 + 1;
    int rightIndex = (currentIndex + 1) * 2;
    int max = source.length;//可以不用每次都计算
    if(leftIndex < max) {
        BinaryTreeNode leftNode = new BinaryTreeNode();
        leftNode.value = source[leftIndex];
        current.left = leftNode;
        buildTree(leftNode, source, leftIndex);
    }

    if(rightIndex < max) {
        BinaryTreeNode rightNode = new BinaryTreeNode();
        rightNode.value = source[rightIndex];
        current.right = rightNode;
        buildTree(rightNode, source, rightIndex);
    }
}

 

    1)前序遍历代码样例:

public static void main(String[] args) throws Exception{
	//....
    front(tree.root);
}

private static void iterate(BinaryTreeNode current) {
    BinaryTreeNode left = current.left;
    System.out.print(current.value + ",");
    if(left != null) {
        iterate(left);
    }
    BinaryTreeNode right = current.right;
    if(right != null) {
        iterate(right);
    }
}

 

    2)中序遍历代码样例:

private static void iterate(BinaryTreeNode current) {
    BinaryTreeNode left = current.left;
    if(left != null) {
        iterate(left);
    }
    System.out.print(current.value + ",");
    BinaryTreeNode right = current.right;
    if(right != null) {
        iterate(right);
    }
}

 

    与前序遍历的唯一差别,就是打印当前节点的时机,即先遍历完左节点之后才打印。那么“后序遍历”同理!

 

五、指定二叉树的“前序遍历”数组、“中序遍历”数组,请根据上述2个数组来重建此二叉树。

    从上题中我们已经知道,二叉树的三种遍历方式,这个题正好相反,我知道了二叉树的遍历的结果,我们要反向重建二叉树。(备注:前序 + 中序、中序 + 后续可以重建二叉树,只知道其中一种,是无法完全重建原有的二叉树)

    输入:二叉树的前序、中序遍历结果,比如前序、中序遍历结果分别为[1,2,4,7,3,5,6,8]、[4,7,2,1,5,3,8,6]。

    输出:无输出,构建一个二叉树。(备注:可以输出为此二叉树的“后序遍历”结果)

 

    这道题已经算是比较复杂了,通常现场面试、笔试的话已不太适合,比较耗时。主要考察对二叉树遍历的原理,以及反向思维。

前序:
1  2  4  7  3  5  6  8
中序:
4  7  2  1  5  3  8  6
构建结果:
        1
        |
   2        3
    /        |
   4     5     6
   \             /
    7          8


前序的特点就是“中”--“左”--“右”,对于任何二叉树包括其子二叉树,root节点总是位于第一个,比如本例中“1”就是此二叉树的root节点。

中序的特点就是“左”--“中”--“右”,对于二叉树包括其子二叉树,遍历结果中root节点值的左边一定是左子树,右边一定是右子树。

最终规律是:根据前序结果找到二叉树(递归是为二叉树子树)的root节点,根据中序结果找到“左子树”、“右子树”。

根据前序结果我们得出顶层的root节点是1,然后在中序结果中找到1的位置,1的两侧分别为root的“左子树”、“右子树”。

第一次拆分:
1  [2  4  7]  [3  5  6  8]
[4  7  2]  1  [5  3  8  6]
通常是根据”中序“找到左右子树后,分别计算左右子树的元素个数,比如本次拆分,左子树为3个元素,右子树为4个元素;然后在”前序“结果中,紧邻root的3个元素也是”左子树“,此后的四个元素是”右子树“。

然后递归:分别让它们的左子树和右子树,也按照上述原理,查找root,然后继续拆分子树....
左子树的前序:2 4 7
左子树的中序:4 7 2
此左子树的root节点为2,然后继续拆分...

右子树的前序:3 5 6 8
右子树的中序:5 3 8 6
此右子树的root节点为3,然后继续拆分...

 

    代码样例如下:

public static void main(String[] args) throws Exception{
    int[] preOrder = {1,2,4,7,3,5,6,8};//前序
    int[] inOrder = {4,7,2,1,5,3,8,6};//中序

    BinaryTree tree = new BinaryTree();
    BinaryTreeNode root = new BinaryTreeNode();
    tree.root = root;
    buildTree(root,preOrder,0,preOrder.length - 1,inOrder,0,inOrder.length - 1);
    iterate(root);
    System.out.println("");
    iterate1(root);
}

static class BinaryTree {
    BinaryTreeNode root;
}
static class BinaryTreeNode {
    BinaryTreeNode left;
    BinaryTreeNode right;
    int value;
}

private static void buildTree(BinaryTreeNode current,int[] preOrder,int preStart, int preEnd,int[] inOrder,int inStart,int inEnd) {

    int value = preOrder[preStart];
    current.value = value;
    if(preStart == preOrder.length -1 || inStart == inOrder.length - 1) {
        return;
    }
    int nextRoot = -1;

    for(int i = inStart; i <= inEnd; i ++ ) {
        if(inOrder[i] == value) {
            nextRoot = i;
            break;
        }
    }
    if (nextRoot == -1) {
        throw new RuntimeException("Error!");
    }

    int leftLength = nextRoot - inStart;
    if(leftLength > 0) {
        BinaryTreeNode left = new BinaryTreeNode();
        current.left = left;
        buildTree(left, preOrder, preStart + 1, preStart + leftLength, inOrder, inStart, nextRoot - 1);
    }

    int rightLength = inEnd  - nextRoot;
    if(rightLength > 0) {
        BinaryTreeNode right = new BinaryTreeNode();
        current.right = right;
        buildTree(right, preOrder, preEnd + 1 - rightLength, preEnd, inOrder, nextRoot + 1, inEnd);
    }

}

 

Java在线编程常见算法题总结(一) 一、两个大数的相加 两个大数相加。 1、确定是正整数; 2、两个数无限大,long都装不下; 3、不能用BigInteger; 4、不能用任何包装类提供的运算方法; 5、两个数都是以字符串的方式提供。 输入描述 56723 82734123 输出描述 82790846 算法关键点 1、字符串转数组 2、字符串翻转 3、ASCII码加减处理 4、数字相加进位处理 public class Mai... 阅读详情

相关推荐

Pwntools不只是PWN:用它写个自动化Fuzz脚本,挖掘Linux命令行工具漏洞

本文探讨了如何利用Pwntools构建自动化Fuzz脚本,挖掘Linux命令行工具中的漏洞。通过详细的代码示例和实战案例,展示了Pwntools在Fuzzing中的高效性和灵活性,特别适合快速验证特定场景的安全问题。文章还提供了进阶技巧和避坑指南,帮助安全研究人员快速上手并提升测试效率。

weixin_28718345的博客 221

你真的会用 VS Code 的 Ctrl、Shift和Alt吗?高效易用的快捷键:多光标、跳转引用等轻松搞定

本文我为大家总结了 Ctrl 、 Shift 、 Alt 与方向键结合的妙用,简单易学,又功能强大。我录制了大量动图,帮助读者更好地理解这些快捷键的高效。

记录学习痕迹的公众号:Piper蛋窝 2931

手把手教你用ESP32驱动MAX30102心率血氧传感器(含完整代码)

本文详细介绍了如何使用ESP32微控制器驱动MAX30102心率血氧传感器,构建智能健康监测系统。内容涵盖PPG原理、硬件连接、驱动配置、信号处理算法以及Web服务器数据可视化,提供完整代码实现,帮助开发者快速上手物联网健康设备开发。

weixin_29208077的博客 587

【透过算法了解编程】之加一

Hello,大家晚上好,我是猿码。夜深人静宿自宽,不写博客枉疯癫! 今天为大家带来的是一道 super easy 的算法题,由于它不涉及到分治(Divide and Conquer)、动态规划(DP)、递归(Recursive call)以及二分(Binary search)等算法,因此算不上经典,但作为了解 JVM 的 Happend-before 或程序执行流程优化可见一斑,前者可能有些牵强。 ???? 题目:加一(Plus one) ???? 题目介绍: 给定一个由 整数 组成的 非空 数组

qq_42349895的博客 480

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7323

机器学习实例(预测房价中位数)(附代码)

1、下载数据: 下载一个压缩文件housing.tgz即可,其包含housing.csv(已经包含书有数据。),用 tax xzf housing.tgz 来解压提取CSV文件。 import os import tarfile import urllib.request DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/" HOUSING_PATH = os.path.join("datasets",

qq_51153436的博客 2758

实验一 DES加密算法编程实现

华南理工大学 软件学院 陈春华 (博士) chunhuachen@scut.edu.cn 一、 实验目的 通过使用DES 算法对实验数据进行加密和解密,掌握现代分组密码算法基本原理,熟练掌握DES 算法各部件的运算原理和具体运算过程。 二、 实验原理 现在密码算法可分为对称密码(Symmetric Cryptology)和非对称密码(Asymmetric Cryptology);其区分依据主要是所采用的密钥间的关系。在对称密码中,加密密钥和解密密钥是完全相同的,或彼此之间容易互相推导。在非对称密码算法,或称

m0_46506304的博客 1万+

从个体到群体:Cartool实战静息态EEG微状态聚类全解析

本文详细解析了使用Cartool软件进行静息态EEG微状态聚类的完整实战流程。从个体水平聚类到群体模板提取,再到指标量化,文章深入探讨了k-means算法的应用、GFP峰值数据的使用技巧以及关键参数设置,为脑电信号处理研究者提供了从数据准备到结果解读的全方位指南。

weixin_29062671的博客 290

编程基本算法(一)

  笔者好长时间没有更新博客了,一个原因是开发的项目所用到的技术都是老技术点,所接触到的知识都是行业逻辑流程,所以只是自己做了总结并没有拿上来分享。另外一个原因是目前笔者在重新学习C++语言以及计算机的一些基本知识(算法等)。   下面的代码为C++代码,好了直接进入正题 编程基本算法(一)   编程基本算法(二) 编程基本算法(三)   折半查找 ...

dkenp04020的专栏 153

时钟门控ICG单元的timing问题

本文探讨了数字IC设计中门控时钟(ICG)的时序收敛问题,重点分析了ICG单元在setup时序检查中易出现违例的原因及优化方法。文章指出,由于ICG单元不在时钟树平衡范围内,其时钟路径延迟通常小于后续寄存器,导致setup时序难以满足。提出的解决方案包括:1)将ICG尽量靠近受控寄存器放置;2)使用set_clock_gating_check命令加强时序约束;3)在布局阶段设置负时钟延迟;4)CTS阶段设置插入延迟。同时强调set_clock_gating_check命令对ICG单元同样有效,并介绍了ICG

u011075954的专栏 1111

项目经理面试 5 大高频题 + 实战回答模板,帮你稳拿 offer

项目经理面试5大高频问题及应答技巧 摘要:本文总结了项目经理岗位常见的5个面试问题及回答策略,帮助求职者更有针对性地准备面试。核心问题包括:1)描述负责过的典型项目;2)常用项目管理工具;3)项目遇到的挑战及解决方案;4)风险管理方法;5)项目成功标准。每个问题都从面试官考察重点、回答技巧、实战案例三个维度进行分析,强调要用STAR法则(情境-任务-行动-结果)结构化表达,突出解决问题的能力而非简单罗列经历。特别提醒要量化项目成果(如提前2周上线、节省8%预算等),并注意展示商业思维和团队协作能力。

逸尘谈PM 2105

C语言算法编程专题(一)

接下来的日子,2018年12月18日至2019年1月底,本次我专门学习C语言算法编程的学习。对此有兴趣的同学可以参考关注一起学习。如有差错,多多指教。 目的: 打好坚实的C语言基础。 期间拓展一些数据结构知识。 期间拓展一些C++知识。 为2019年春招面试打下一个底气基础。 路漫漫其修远兮,吾将上下而求索。 本次探索路程(大致)包含: C语言编程实例(包含50于道最基础编程...

qq_22613757的博客 839

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

本教程概述了LC-MS/MS在代谢组学和脂质组学数据分析中的应用流程。首先介绍了样本的采集、提取和LC-MS/MS分析,随后详细阐述了质谱数据的预处理、峰值识别、特征注释,以及数据标准化和统计分析的重要性。特别强调了使用XCMS和CAMERA进行数据对齐和加合物识别,以及利用MultiABLER和LipidFinder进行数据过滤、插补和标准化处理。此外,还介绍了如何应用EigenMS算法进行数据标准化,以及如何使用Limma包进行差异分析。整个流程旨在提高数据质量,确保分析结果的准确性和可靠性,为后续的生

专注生信领域 1954

从“加一”算法看编程思维的三个层次:以一道LeetCode题为例

问题简化:将复杂操作分解为基本步骤边界处理:考虑极端情况效率优化:时间与空间的权衡模式识别:从具体到一般的抽象能力作为一名程序员,我们不应该轻视任何"简单"题目。每一道题都是一面镜子,反映出我们的思维方式和编码习惯。真正的大师,不是能解决多么复杂的问题,而是能把简单的问题做到极致。最后,分享一句我很喜欢的话:"编程之道,不在写多少代码,而在用多少思考。"下次遇到简单问题时,不妨多问自己:我真的把这个问题想透彻了吗?

B20060517的博客 736

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

五子棋智能算法——博弈树编程实现一字棋(四)

一字棋指的是:在一个九宫格内率先连成三个字的取胜 首先,基于前面决策树的讲解 博弈的棋类游戏等等 只要找到合适的估值函数都可以使用博弈树来实现 下面我们来使用博弈树完成一字棋的算法。 根据前面的算法思想我们算法大致分为几步: 1.对棋局落子有正确的估值 2.通过遍历建立博弈树 3.对博弈树进行α-β剪枝增快查找速度(这里由于数据量较小 放在最后一起讲解) 4.根据极大值 极小值搜索...

viafcccy的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

算法编程练习(一)

1.俄罗斯方块(网易2019年题) 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局...

菜鸟的博客 604

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA面试精选【Java算法与编程一】

在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个...

qc 142

十大编程算法(一)

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构 上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来

smxueer的专栏 566

【十大编程算法】算法一:快速排序算法

快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序是对冒泡排序的改进,它使用分治法的思想,每次循环根据指定的基准数,将...

良月柒 2827

算法编程题总结(一)

如果使用一个二元组表示一张代金券,即需要满x元才能优惠y元,那么需要注意的是,并不是所有代金券的x都是大于等于y的,良心美团也会推出一些x

weixin_46434152的博客 812

python编程跳一跳_[算法题] 跳一跳 Python求解

题目描述:跳一跳​有一条石板路,每块石板上从1挨着编号为:1、2、3…,这条石板路要根据特殊的规则才能前进:对于当前所在的编号为 K 的石板,单次只能往前跳K的一个约数(不含1和 K )步,即跳到 K + X ( X 为 K 的一个非1和本身的约数)的位置。若当前处在编号为 N 的石板,想跳到编号恰好为 M 的石板去,请求解最少需要跳跃次数,不可到达输出-1。​输入格式:4 24​输出格式:5算法...

weixin_39957186的博客 290

编程中一些常见算法(一)

1、向上取整:x/y向上取整 = (x + y -1)/y #include void main() { int x=22,y=5; int result = (x + y -1)/y; printf("%d/%d的结果向上取整后为:%d\n",x,y,result); } 2、四舍五入:

adusuccessfully的专栏 864
上一篇: Mysql Replication基本原理(一)
下一篇: 算法编程(二)
shift_alt_ctrl
博客等级 码龄10年 0粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值