学习完课程后,自己用C++实现了简单的顺序表和链表,并用约瑟夫问题做了测试,不保证完全正确。
其中有一点需要注意一下:C++中类模板声明头文件和实现头文件不可以分离到.h和.cpp中,否则无法正常编译,详见:https://www.zhihu.com/question/20630104源码
1.顺序表
//seqlist.h#pragma once
#include
us...
分类:
其他好文 时间:
2016-06-29 11:29:54
阅读次数:
283
每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在 ...
分类:
其他好文 时间:
2016-06-24 19:03:55
阅读次数:
196
问题描述:已知n个人(以编号1,2,3...n分别表示)围成一圈。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,求最后那个人的编号(直到所有人全部出列,模拟该过程)?解决:此问题可以用数组or链表实现,可以用数学方法进行简化(不用模拟 ...
分类:
其他好文 时间:
2016-05-31 17:23:19
阅读次数:
149
传智播客PHP学院 韩顺平 PHP程序员玩转算法第一季 http://php.itcast.cn 聊天篇: 数学对我们编程来说,重不重要? 看你站在什么样的层次来说. 如果你应用程序开发,对数学要求不高 但是,如果你开发系统软件,比如(搜索/识别软件[图像,语言识别]/操作系统...)对数学高 建模 ...
分类:
Web程序 时间:
2016-05-21 14:26:55
阅读次数:
621
这个问题其实还蛮有名的,它被称为约瑟夫的问题。 最直观的解法是用循环链表模拟报数、淘汰的过程,复杂度是O(NM)。 今天我们来学习两种更高效的算法,一种是递推,另一种也是递推。第一种递推的公式为: 接下来我们用数学归纳法来证明这个递推公式的正确性: (1) f[1] = 0 显然当只有1个候选人时, ...
分类:
其他好文 时间:
2016-05-18 16:10:32
阅读次数:
193
约瑟夫问题的提法:n个人围成一个圆圈,首先第1个人从1开始,一个人一个人的顺时针报数,报到第m个人,令其出列;然后再从下一个人开始,从1顺时针报数,报到第m个人,再令其出列,…,如此下去,直到圆圈中只剩一个人为止,此人即为优胜者。 例如 n = 8 m = 3 该问题老师让我们在带头节点的单循环链表 ...
分类:
其他好文 时间:
2016-05-18 10:21:21
阅读次数:
231
约瑟夫问题——利用循环链表求解1. 约瑟夫问题的提法
约瑟夫问题(约瑟夫环)是一个数学的应用问题。
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依此规律重复下去,直到圆桌周围的人全部出列。
通常解决这类问题时我们把编号从1~n,最后结果编号即为原问题的解。
2. 求解约瑟夫问题的算法原理示...
分类:
其他好文 时间:
2016-05-07 06:51:27
阅读次数:
169
http://hihocoder.com/problemset/problem/1296 ...
分类:
其他好文 时间:
2016-04-26 14:06:54
阅读次数:
130
(p.s: 以前做约瑟夫问题都是用链表模拟,今天发现了一个效率更高的方法,受教了。。。)
题目描述:
小Hi和小Ho的班级正在进行班长的选举,他们决定通过一种特殊的方式来选择班长。
首先N个候选人围成一个圈,依次编号为0..N-1。然后随机抽选一个数K,并0号候选人开始按从1到K的顺序依次报数,N-1号候选人报数之后,又再次从0开始。当有人报到K时,这个人被淘汰,...
分类:
其他好文 时间:
2016-04-22 20:50:02
阅读次数:
315