[java]/** * 递归分治算法学习之二维二分查找 * @author Sking 问题描述:存在一个二维数组T[m][n],每一行元素从左到右递增,每一列元素从上到下递增,现在需要查找元素X(必在二维数组中)在数组中的位置,要求时间复杂度不超过m+n. */ package 递归分治; pub ...
分类:
编程语言 时间:
2017-10-13 16:18:10
阅读次数:
135
题目描述 一个N*M的棋盘,’.’表示可以通过,’#’表示不能通过,给出Q个询问,给定起点和终点,判断两点是否联通,如联通输出“Yes”,否则输出“No”。? 数据范围 N,M <=500,Q <=10^6。 题解: ①由于存在两个方向和不可逆性,标记联通分量的方法不可行 ②分治算法。按照行将棋盘一 ...
分类:
其他好文 时间:
2017-10-12 10:34:53
阅读次数:
100
1.快速排序的思想 a.用数组的首元素作为划分的标准,把小于 首元素的元素 划分到 左半部分,把大于 首元素的元素 划分到 右半部分。 b.在左右两半部分分别用调用 a 中的方法, 把子数组继续划分,直到子问题的 规模 划分 到 1 为止。 ...
分类:
编程语言 时间:
2017-10-05 22:40:21
阅读次数:
314
1.最大子段和问题的描述 2.分治策略的求解思路 用分治法求解这个问题 。 在数组的 center = (right-left)/2+left 位置处分开。形成两个子数组。 那么,最大子段和 可能出现在三个位置: a.可能出现在 左 子数组 b. 可能出现在 右子数组 c.可能出现在 过center ...
分类:
编程语言 时间:
2017-10-05 17:18:52
阅读次数:
224
1.什么是分治算法: 当一个很大的问题直接求解不直观甚至非常困难的时候,可以考虑把大问题转化成一个个的小问题,当小问题还是很难直接求解,就把小问题继续转化成更小的问题,直到可以直接求解问题。 2.最大最小用分治算法求解的思路: 需要分情况讨论: a. 如果数组的长度只有 1 或者 2 ,那么,直接比 ...
分类:
编程语言 时间:
2017-10-04 14:18:51
阅读次数:
155
终于 找到课程链接了,太赞了,屈婉玲老师真的太厉害了! http://www.chinesemooc.org/kvideo.php?do=course_progress&kvideoid=4748&classesid=1972 数组的最大值,最小值有好几种方法求解: 第一种: 蛮力法 第二种方法是 ...
分类:
编程语言 时间:
2017-10-04 14:12:04
阅读次数:
268
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会。 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次? 今天考试第一题是高精度+数学,第二题是图论技术大分类讨论,第三题是状压的树归 第一题看到之后自信 ...
分类:
其他好文 时间:
2017-10-01 23:02:02
阅读次数:
164
https://www.youtube.com/watch?v=EMw1rwQmD3w&index=27&list=PLvdLBjhf_tgqq0ESrSd4rH8bXLmOlxN2J 二分查找的思路: 复杂度分析: 当数组的规模为n时, 经过一次比较,数组的规模变成了 N/2 当数据的规模为1时, ...
分类:
编程语言 时间:
2017-10-01 12:29:10
阅读次数:
169
分治算法的基本思想: 1. 将原始问题划分 或 归结为 规模较小的子问题。 2.递归或者迭代求解每个子问题 3.将子问题的解综合得到原问题的解 注意: 1.子问题与原始问题性质完全一样 2.子问题之间可彼此独立地求解 3.递归停止条件时 子问题可以直接求解 ...
分类:
编程语言 时间:
2017-10-01 12:14:41
阅读次数:
144
https://www.youtube.com/watch?v=EMw1rwQmD3w&index=27&list=PLvdLBjhf_tgqq0ESrSd4rH8bXLmOlxN2J 二分归并排序 选择中间的数,把数组对半划分。分别对 子问题1 和 子问题2 进行排序,最后把这两个排好序的问题 综 ...
分类:
编程语言 时间:
2017-10-01 12:14:21
阅读次数:
168