![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
西瓜的夏天啊
这个作者很懒,什么都没留下…
展开
-
洗牌算法(转载)
洗牌算法 设计一个公平的洗牌算法1.看问题,洗牌,显然是一个随机算法了。随机算法还不简单?随机呗。 把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可。 如果你的答案是这样,通常面试官会进一步问一下,k 应该取多少?100?1000?10000?很显然,取一个固定的值不合理。如果数组中有 1000000 个元素,随机 100 次太少;如果数组中只有 10 个元素,随机 10000 次又...转载 2020-03-01 01:27:00 · 1904 阅读 · 1 评论 -
筛选法求素数
bool arr[100001];//默认为0 for (int i = 0; i < 100001; i++) { arr[i] = 0; } arr[0] = 1; arr[1] = 1;//这两个肯定不是质数 //筛选法求质数 for (int i =2; i < sqrt(100001); i++)//因为如果它不是质数,那么它一定可以表示成两个数...原创 2019-10-04 12:25:06 · 94 阅读 · 0 评论 -
菲波拉契数列Fibonacci递归和非递归
1.写出菲波拉契数列自底向上的非递归动态规划算法或自顶向下的递归动态规划算法(备忘录方法)。 输入:输入一个数字。 输出:输出为Fibonacci数列的值。 示例:输入:5 ,输出:8Fibonacci数列可以递归地定义为: #include<iostream> using namespace std;int Fibonacci(int n)//递归 { if (n==0||n=原创 2017-05-01 20:55:05 · 2423 阅读 · 0 评论 -
汉诺卡Hanoi问题详解
有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。#include<iostream> using namespace std; //例如有N和盘子在A柱子上,要移到C上,B是中转站作用。 //分解简化一下问题, //① 我原创 2017-05-08 19:53:31 · 670 阅读 · 0 评论 -
全排列的递归解法
#include <iostream> using namespace std; int total = 0; //交换函数 inline void swapArray(int &a, int &b) //设置成内联函数运行更快 { int temp; temp = a; a = b; b = temp; } //递归函数 void fullPermu原创 2017-04-30 16:31:00 · 1552 阅读 · 0 评论 -
递归 递推
作者:帅地 链接:https://www.zhihu.com/question/31412436/answer/683820765 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 递归: 应用到 分治法 分治法又分为 减而治之(规模减一 全排列)和分而治之(规模减半 归并算法) 递归的三大要素 第一要素:明确你这个函数想要干什么 对于...转载 2019-10-04 13:42:10 · 313 阅读 · 0 评论