
算法
持成
开发中的菜鸟,菜鸟中得战斗机,为了菜鸟的荣耀,万胜!!!
https://github.com/ccovers
展开
-
八皇后问题
八皇后问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?任两个皇后都不能处于同一条横行、纵行或斜线上。(八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当n = 1或n ≥ 4时问题有解。)解题思路:(棋盘大小为8行8列,根据规则每行每列最多只能摆放一个)1、循环遍历一行当中的每一个元素,符合条件的保存到数...原创 2018-04-11 16:11:39 · 222 阅读 · 0 评论 -
位图排序
什么是位图(BitMap):所谓的BitMap就是用一个bit位来表示某些元素是否存在。位图适用于快速查找、判重、排序(数据不能有重复)。假设一个例子,我们要对0-7内的5个元素(5、4、7、0、3)排序(假设元素没有重复)。1、要表示0-7的8个元素,需要8个bit(1Byte);2、开辟一个1Byte的空间,依次遍历这5个元素;首先第一个元素是5,那么就把5对应的位置置为1(bit_map[5...原创 2018-04-12 11:18:28 · 176 阅读 · 0 评论 -
二分排序法
二分排序:遍历数组元素,将小于当前值的元素移到左边,将大于当前值的元素移到右边;然后分别递归左边、右边继续排序。假设一个数组为{3,2,5,0,4}使用如下代码进行排序:#include <stdio.h> #include <stdlib.h> #include <string.h> #define ARRAY_SIZE 10 void print(int...原创 2018-04-12 14:08:53 · 635 阅读 · 0 评论 -
求单向链表倒数第K个元素
typedef struct NodeList { int value; struct NodeList *next; }NodeList;有如上节点类型的单向链表,求链表的倒数第K个节点。(1)递归NodeList* find_node(NodeList *node, int K) { //记录倒数第几个节点 static int index = 0; NodeList *tmp = ...原创 2018-05-11 15:06:29 · 250 阅读 · 0 评论 -
限流算法之令牌桶
一、令牌桶算法和漏桶算法1、漏桶算法,有一个固定大小的桶,桶中的流量按照固定的速率流出,此时若有流量流入桶中,如果流入的速率比流出的速率大,则可能导致超过桶大小的流量溢出。2、令牌算法,有一个固定大小的桶,按照一定的速率往桶中放入令牌,如果令牌超过桶大小则会溢出,此时若有流量需要发送,则先到令牌桶取发送的数目(如果数目不足则等待一段时间再取),令牌桶的数目相应的减少。区别:漏桶算法只允许按照一定的...原创 2018-06-06 10:06:19 · 1049 阅读 · 0 评论 -
侦探调查罪案---采用程序计算
侦探调查了罪案的四位证人。从证人的话侦探得出的结论是:如果男管家说的是真话,那么厨师说的也是真话;厨师和园丁说的不可能都是真话;园丁和杂役不可能都在说谎;如果杂役说真话,那么厨师在说谎。侦探能判定这四位证人分别是在说谎还是在说真话吗? package main import ( "fmt" ) func main() { getBool := func(v int) bool { if...原创 2019-01-25 19:17:31 · 5591 阅读 · 0 评论