![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试专题——查询
huangxy10
这个作者很懒,什么都没留下…
展开
-
八数码问题
http://www.dakaren.com/blog/post/3.html八数码问题一.八数码问题八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓转载 2012-09-30 17:23:52 · 33108 阅读 · 1 评论 -
杨氏矩阵查找
1. 简述杨氏矩阵中,每行元素是递增的,每列元素也是递增的。即a[i][j]2. 原理从矩阵的左下角或者矩阵的右上角处开始递归运行,以左下角为例,key为要查找的值,(i,j)为当前矩阵中的位置,初始为(N-1, 0)。如果超过了矩阵范围则说明不存在这样的元素。下面, 每行元素从左到右递增,每列元素从上到下递增。例如:5 52 3 4 5 63 4 5 6 7转载 2012-09-25 17:00:51 · 3784 阅读 · 1 评论 -
BFS,dijkstra算法
http://ac.jobdu.com/problem.php?pid=1008题目描述:给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入:输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数转载 2012-09-28 22:53:42 · 2434 阅读 · 0 评论 -
二分查找之深入分析
二分搜索算法是运用分治法的经典例子,给定已排好序的n个元素,现在要在这n个元素中找到一个特定的素,注意使用二分查找的时候要知道已排序的n个元素是升序还是降序还有你使用的数据类型(字符串类型的比较要注意)。1. 最基础的二分查找下面的的例子为升序情况的二分查找的情况。示例:如有已排序数组有8个元素如下查找元素x = 5;1 5 6 7 9 10 12 44转载 2012-10-06 03:23:12 · 1722 阅读 · 4 评论 -
回溯法解组合问题——硬币问题
问题:1,你有(足够的)5分,2分,1分的硬币,现在要凑出来12分的结果,那么最少的硬币组合是?2,如果有5,12,7,-5,-7,-12这六个硬币。现在要你凑0-2000以内的任意数又该如何组合呢?用回溯法解组合问题。在解空间中搜索。// MoneyCount.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include原创 2012-09-25 12:09:51 · 4630 阅读 · 0 评论 -
寻找数组中的最小值和最大值——编程之美2.10
转自:http://blog.csdn.net/flyinghearts/article/details/6388834#问题:寻找数组中的最小值和最大值。 一道很简单的题目,一般有下面4种解法:1 遍历两次,每次分别找出最小值和最大值。2 只遍历一次,每次取出的元素先与已找到的最小值比较,再与已找到的最大值比较。3 每次取两个元素,将较小者与已找到的最小值比转载 2012-10-07 23:52:07 · 4082 阅读 · 1 评论 -
RMQ问题
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j主要方法及复杂度(处理复杂度和查询复杂度)如下: 1.朴素(即搜索) O(n)-O(n) 2.线段树(segment tree) O(n)-O(qlogn) 3.ST(实质是动态规划) O(nlogn)-O(1) 线段树方法: 线转载 2012-09-05 12:35:28 · 1212 阅读 · 0 评论 -
寻找第K大的数
1,对于一个有序数组则为第K个数,O(1)2,对于一个无序数组使用修改的快排划分算法,时间复杂度为O(n)3,对于两个无序数组合并(不是真的合并,只是看出一个数组),则时间复杂度为O(n+m)4,对于两个有序(假设递增)数组http://www.51nod.com/question/index.html#!questionId=217在两个有原创 2012-10-18 11:21:41 · 3414 阅读 · 0 评论