摘要: 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法 取左下角或右上角,例如取右上角,与目标数对比,如果大于目标数横坐标减一,如果小于纵坐标加一 阅读全文
posted @ 2020-04-11 22:54 苏安 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 一.动态规划的含义 动态规划是用来解决一类最优化问题的算法。它将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。为提高动态规划的效率,还需要将每个子问题的最优解记录下来,省去不必要的重复计算。 二.动态规划的两种写法 递归写法: 典型的例子就是斐波那契数列,定义为:F( 阅读全文
posted @ 2019-03-22 14:39 苏安 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 首先二叉树数据结构定义如下: 思路如下:由后序遍历序列可得到根结点(即后序遍历最后一个结点),以根结点将中序遍历序列分为两个子序列。这样一来,就可以确定根结点下的左右子树的结点个数,那么在后序遍历序列可以看作根结点左子树序列+根结点右子树序列+根结点组成。由树的递归性可以对根结点左子树序列、根结点右 阅读全文
posted @ 2019-03-21 13:34 苏安 阅读(3040) 评论(1) 推荐(0) 编辑
摘要: 当处于一个巨大的迷宫中,你只有第一人称视角,应该如何以最快速度走出这个迷宫呢? 依据深度优先算法,这种策略一定有效:以当前位置为起点,沿着一条路向前走。当遇到一个岔路口时,就选择一个岔路前进,如果这个岔路是死胡同,就退回上一个岔路口;如果这个岔路又有新的岔路口,就依据之前的做法,再选择一条岔路口继续 阅读全文
posted @ 2019-03-20 15:18 苏安 阅读(773) 评论(0) 推荐(0) 编辑
摘要: c++的vector是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据,使用时需要添加头文件: vector的基本函数如下: 增加函数: 删除函数: 判断函数: 大小函数: 遍历函数: 其他算法: (1) 使用reve 阅读全文
posted @ 2019-03-17 20:44 苏安 阅读(319) 评论(0) 推荐(0) 编辑