算法
文章平均质量分 60
PerryXu_BIT
非主流全栈攻城狮
展开
-
[C/C++] 电缆分割问题(二分查找的应用)
课上的小朋友请自己编写..小心相似度。大二做过的题目绝大部分已经忘了,拿来回忆巩固一下也不错。描述如下:某地区即将举行区域程序设计比赛,竞赛委员会已经成立并决定举行一次最公平的竞赛, 他们决定利用星形拓扑结构来连接每个竞赛者的电脑---也即连接这些电脑到一个中心HUB上 为了达到真正的公平竞赛目的,竞赛委员会主任下令要求:每个竞赛电脑连接到中心HUB的 电缆必须是一样长的。竞赛委员会联系了一个本地...原创 2015-04-09 12:02:56 · 2394 阅读 · 0 评论 -
[C/C++] 如何快速得写出快速排序
最近很多同学找实习,面试一个环节是纸上写程序,如快速排序,链表合并等。那如何在短时间内有效写出快排?快排是一种分治法,每次找到基准并划分数组,再依次递归即可。重点在于如何划分,划分的重点在于从两侧的遍历和替换。(这里初始基准取第一个元素)压缩代码后快排程序如下:<pre name="code" class="cpp">#include<iostream>using nam...原创 2015-04-08 13:51:39 · 1020 阅读 · 0 评论 -
[C/C++] 冒泡排序简洁写法
同样是面试常问的题目,虽然简单,能正确简洁写出冒泡的人其实也不多吧#include<iostream>using namespace std;void bSort(int n,int input[]){ for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++){ if(input[j+1]<input[j]) /...原创 2015-04-08 14:06:15 · 1294 阅读 · 0 评论 -
[C/C++] 回溯法解0-1背包问题
用最小的空间装最大价值的物品是经典的背包问题,而0-1背包是背包问题中最简单的情况,常见的做法有动态规划和回溯法等。本文用更为容易理解的回溯法来解决该问题。我们把每个输入的物品都看做一个节点,用标记数组来标记是否使用该物品,于是物品节点之间能够生成一颗二叉树,二叉树节点的左子(1)表示装该物品,右子(0)表示不装该物品。于是我们可以从二叉树的根节点用深度优先搜索的方法来遍历直到叶子节点,我们对每条...原创 2015-04-16 17:05:55 · 1927 阅读 · 0 评论 -
[C/C++] 如何快速写出2-归并排序
2路归并指的是每次将集合分为2个子集和的归并排序。(此处用2分法)归并排序原理是将现有集合划分为N个子集和,对N个子集和进行排序,再依次合并N个有序的子集和,直到最终合并成完整集合。之前面试遇到一个经典的链表问题是合并两个有序链表,其实和归并中的并很相近。归排和递归的快排写法相近,主要是合并函数merge的编写。写法如下:#include<iostream>using namespa...原创 2015-04-16 18:53:31 · 421 阅读 · 0 评论 -
[C/C++] 用线性时间选择来找无序数组的中位数
有一道题大概是这样的:有n条水平的线,知道线的纵坐标,选择一条线,使得这条线到所有线的距离之和最小。根据数学知识,我们知道,如果线是奇数条的话,那么中间那条(纵坐标的中位数)即可,如果是偶数条的话,那么中间那2条区间内的都可以,而如果要线的纵坐标尽可能小,那么就取中间两条纵坐标较小的那条即可。那么在线数量为偶数的时候,这并不是传统的求中位数问题,而线数量为奇数的时候,则变成传统的中位数问题。求中位...原创 2015-04-09 12:37:39 · 4554 阅读 · 1 评论 -
[Java] N皇后问题
搬来我在Github上做leetcode的经典题目(难度Hard): N-Queens(N皇后)N皇后是说在N*N的棋盘上放置N个皇后,让她们各自谁也无法吃掉谁。(我们可能经常可以听到8皇后问题,其是N皇后问题的一个特例)对于这类问题,我的基本方法是回溯法,用递归的方式来找到可能的解:先确定N*N矩阵的每一行的皇后位置,然后再递归试探下一层可能满足条件的皇后的位置,以此类推,如果直到第N层皇后都有...原创 2018-05-02 23:07:58 · 237 阅读 · 0 评论 -
[Java] 回溯法解数独(Sudoku)问题
数独是个很有意思的数学问题。写程序解决数独是个很好的算法实现锻炼,其也是Leetcode上一个Hard问题。 我的基本想法就是回溯法, 我是用人类正向解题思维的方式去实现的代码,应该还有更快更好的方法,我还没有更深入研究。PS: 数独规则对于一个数独问题,我们需要在9*9的空格内填入数字。这9*9被分成9个3*3的小块N1 - N9,要保证每个小块Ni包含的数字必须是1至9,不能重复。同时,9*9...原创 2018-05-03 12:55:35 · 829 阅读 · 0 评论