双向循环链表的实现2013-01-11 09:29:04 我来说两句 作者:坚持理想_面对现实收藏我要投稿在使用链表来解决约瑟夫问题的时候,用到了循环链表。循环链表又分为单向循环链表与双向循环链表,约瑟夫问题采用单项循环链表可以得到很好的而解决了,但是单向链表的很大的缺陷仍然存在,那就是在删除的时....
分类:
其他好文 时间:
2014-07-03 06:12:32
阅读次数:
308
约瑟夫问题是一个很经典的问题,描述的是n的人围成一圈,每次数到第m个人就会被淘汰,之后在淘汰的人开始在数起第m个人,这样下去只带还剩下1个人为胜利者,这个题是约瑟夫问题的变形,它每次裁定的标准不再是一个恒定的m而是按照素数表中的第i次淘汰第i个人,所以我们需要求出素数表才能知道裁定的次序,也才能求出剩下的人的序号
首先,对于约瑟夫原本的问题是可以对每次淘汰使用逐个列举,将这n个人每个人都列举,没...
分类:
其他好文 时间:
2014-07-02 08:09:42
阅读次数:
286
15个教徒与15个非教徒在深海遇险,必须将一半的人投入大海,其余的人才能幸免于难,于是想到一个方法,30个人围成一圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环直到余15个人为止,问怎么样排法,才能使每次投入大海的都是非教徒?using System;using System.C...
分类:
其他好文 时间:
2014-06-25 12:22:56
阅读次数:
294
/**给定正整数k( 2 int joseph(int k){ 3 int
m,t,a=1,b,i,n; 4 while(1){ 5 for(b=1;bk)14 return m;15 }16 a+=2;...
分类:
其他好文 时间:
2014-06-10 00:17:35
阅读次数:
261
约瑟夫问题,循环链表实现
问题描述:
n 个人围成一个圆圈, 首先第 1 个人从 1 开始一个人一个人的顺时针报数,报到第 报到第 m 个人, 令其出列。 然后再从下一 个人开始从 1 顺时针报数 , 报到第 m 个人, 再令其出列,如此下去 , 求出列顺序。...
分类:
其他好文 时间:
2014-06-08 15:02:43
阅读次数:
188
约瑟夫(Joseph)问题的一种描述是:编号为1,2,...,
n的n个人按顺时针方向围坐一圈,
每人持有一个密码(正整数)。一开始选任一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将它的密码作为新的m值。试设计一个程序求出出列顺序。测试数据...
分类:
Web程序 时间:
2014-06-06 19:11:54
阅读次数:
382
和上一题一样,寻找第K个位置,只不过需要处理一下下一个位置在哪,画图看看就知道了。
#include
#include
#include
using namespace std;
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
const int maxn = 30000+5;
int sum[maxn<<...
分类:
其他好文 时间:
2014-05-15 20:07:28
阅读次数:
262
#include
using namespace std;
const int size = 1000;
void ArrDel()
{
int arr[size];
//循环结束标志,一直循环到数组中只剩下最后一个元素结束
int currentNum = size;
int count = 0;
for (int k = 0; k < size; k++)
{
arr...
分类:
其他好文 时间:
2014-05-13 15:53:09
阅读次数:
282
1
/**************************************************************************************
2 * Function : 约瑟夫问题 3 * Create Date ...
分类:
其他好文 时间:
2014-05-01 12:17:13
阅读次数:
349