算法设计c++
Mangoit
这个作者很懒,什么都没留下…
展开
-
约瑟夫斯问题
约瑟夫斯问题:有n个人围成一圈,报数从1到m依次循环报数,报到m的就退出(死)。现在我们来看递推,由于为了方便表示(s+m)%i=0的情况,我们让第一人的编号为0,(从一开始也可以)。既然你问递推,那步骤就不说了,只说这个公式吧让获胜者的编号为0(最后一个人只有他了当然是0)f(i)表示获胜者在剩下i个人时的那一局的编号则f(1)=0f(i)=[f(i-1)+m]%i.这里我们可以这样理解如果获胜...原创 2018-04-08 17:35:05 · 1792 阅读 · 0 评论 -
CCF认证-20170902-公共钥匙盒
问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙。 每次取钥匙的时候,老师们都会找到自己所需要的...转载 2019-03-16 10:58:41 · 337 阅读 · 0 评论 -
动手学深度学习小记
1.mx.nd.NDArray()在神经网络中,我们有三种类别的数据:样本数据(输入 和 label) 网络模型参数 网络中每层的输入 数据在 mxnet/Gluon 中,这三种类别的数据都是由 mx.nd.NDArray 来存储的。但是需要注意的是:模型参数记得 NDArray.attach_grad(), 因为模型参数更新的时候需要用到 梯度,attach_grad() ...转载 2018-10-20 10:21:11 · 702 阅读 · 0 评论 -
n皇后问题(回溯法)
当已经放置了一部分皇后以后,对应生成了排列的一部分,可能剩余的皇后无论怎样放置都是不合法的。例如图B中https://blog.csdn.net/qq_36666756/article/details/82958653。当已经放置三个皇后后(对应生成了一部分排列,即351),可以发现剩下的两个皇后无论怎么放置都会产生冲突,就不用继续往下递归了。#include<cstdio>#...原创 2018-10-09 22:00:50 · 475 阅读 · 0 评论 -
一维数组解决n皇后问题(暴力法)
以5皇后为例递归实现:考虑每行只放置一个皇后、每列也只能放置一个皇后,那么如果把n列皇后所在的行号依次写出,那么就会是1-n的一个排列。上图a中的排列为24135,对于b来说就是35142。于是就只需要枚举1-n的所有排列,查看每个排列对应的放置方案是否合法,统计合法的方案。由于当到达递归边界时生成了一个排列,所以需要再其内部判断方案是否合法,即遍历每两个皇后,判断他们是否在同一...原创 2018-10-07 16:07:25 · 1266 阅读 · 0 评论 -
位与去取余运算
位与也是可以用来取余的,但是有一个条件:除数必须是2的n次幂才行。举例子来说明9%8=1 1001 & (1000 - 1)=1001 & 0111=1 // 1001是9的二进制表示,1000是8的二进制表示在二进制计算中,众所周知的是,一个数右移1位相当于除以2的商,而恰巧被移除出去的那一位就是除以2得到的余数,例如 9 >> 1=1001 ...转载 2018-10-13 21:59:07 · 1399 阅读 · 0 评论 -
如何简单的理解递归
递归这玩意不知道有多折磨人,我折腾了快1天了也没有搞懂,直到看到这篇文章:https://www.jianshu.com/p/0c5db522eabb他是引用宋劲松老师写的《Linux C编程》才恍然大悟,理解递归其实也就是不要尝试理解它,你只要越理解你就会越糊涂,就绕进去出不来。事实上,我们并不是每个函数都需要跟进去看执行结果的,比如我们在自己的函数中调用printf函数时,并没有钻进去看它...原创 2018-10-06 16:46:01 · 2558 阅读 · 2 评论 -
二分法求解切割木棍求最大切割长度
例:对于三根长度分别为 10,24 ,15的木棍来说假设K=7,即需要至少7段长度相等的木棍,那么可以得到最大长度为6,在这种情况下,第一根木根可以提供10/6=1段,第二根24/6=4段,第三根15/6=2段,达到了7段的要求。分析: 将最短的那个木根长度看成一个数轴上的值,如第一根木棍[0,10] ,应为只要最短的那根满足了切割的最大长度,那么其余的都满足最大长度了。所以可以对...原创 2018-10-13 10:53:37 · 1571 阅读 · 1 评论 -
深入理解递归
这个博客讲的比较详细:https://blog.csdn.net/fightforyourdream/article/details/8671276通常在下面三种情况下递归的方法会被用到:1、定义是递归的(在数学表达式上是这样的,如求阶乘)2、数据结构是递归的(树)3、问题的解法是递归的...转载 2018-04-10 15:19:51 · 147 阅读 · 0 评论 -
CCF认证-20170302-学生排队
问题描述 体育老师小明要将自己班上的学生按顺序排队。他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整。一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列。 例如,下面给出了一组移动的例子,例子中学生的人数为8人。 0)初始队列中学生的学号依次为1, 2, 3, 4, 5, 6, 7, 8; 1)第一次调整,命令为“3号同学向后移动2”...原创 2019-03-16 15:12:20 · 163 阅读 · 0 评论