算法详解
王晓斌
十年苦烦剧,一念愈倾仰
展开
-
【算法详解】分治算法详解
1. 基本概念分治法就是把一个复杂的问题分成两个或更多的相同或相似的字问题,再把字问题分成更小的字问题... ...直到最后字问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)... ...2. 分治算法的一些经典问题1. 在一个先升序后降序的数组中,找到最到的数usin原创 2013-12-09 23:54:04 · 976 阅读 · 0 评论 -
【算法详解】约瑟夫问题
约瑟夫(Josephus)问题(也成为约瑟夫置换),也成为约瑟夫环。1. 问题描述n个人围成一圈(编号1、2、3、...、n),这些人轮流数数(从编号为1的人开始,从1开始数),当数到m的人就会被处决;接着,后面的人再从继续从1开始数数;如下下去,知道最后只剩下一个人为止。问题是给定了n和m,一开始要找到什么位置才能避免被处决?下面使用图示阐述Josephus问题:如下图,加入有A原创 2014-01-06 10:19:30 · 1940 阅读 · 0 评论 -
【算法详解】洗牌算法
1. 问题描述原创 2014-01-14 13:44:01 · 13649 阅读 · 0 评论 -
【算法详解】有环链表
定义:循环链表:链表中一个节点的next指针指向先前已经存在的节点,导致链表中出现环。问题1:判断是否有环#include #include using namespace std;struct node{ char value; node* next; node(char rhs) { value = rhs; next = NULL原创 2014-02-11 01:11:04 · 845 阅读 · 0 评论 -
【算法详解】斐波那契数列 - Fibonacci sequence
1. 斐波那契数列定义2. 算法求解斐波那契数列的第n个数:2.1 递归/分治法#include #include using namespace std;unsigned long fabinacci(unsigned int n){ if (n == 0) { return 0; }else if (n == 1) { return原创 2014-02-16 13:25:55 · 3241 阅读 · 0 评论 -
【算法详解】打印1到最大的n位数
1. 问题描述输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3,... ,一直到最大的3位数即 999.注意的问题:考虑大数的情形导致的溢出。2. 算法1使用字符串数组表示大数,在字符数组上模拟整数的加法(加 1 ); 字符串数组中每个元素都是 ‘0’ 到 ‘9’ 之间的某一个字符。初始化时将每一个字符都设置为 ‘0’, 相当原创 2014-03-04 00:33:17 · 2302 阅读 · 0 评论 -
【算法详解】求解数值的整数次方
1. 问题描述实现函数:double power(double base,int exponent)求base的exponent次方,不使用库函数,不考虑大数问题。2. 解法1考虑边界问题;#include #include using namespace std;#define DBL_MIN 0.000001double power(doubl原创 2014-03-03 01:51:19 · 813 阅读 · 0 评论