永发信息网

链表相关问题

答案:1  悬赏:50  手机版
解决时间 2021-07-21 08:44

给一个用链表找皇的程序,就是有N个人一圈循环报数,报着3的出去,剩下的那个就是皇。

最佳答案

这是一个Josephus问题,以前写过一个类似的代码,如下:


Josephus问题是古代一个著名的数学难题,有一个故事说Josephus是一群被罗马人


抓获的犹太人中的一个,为了不被奴役,他们选择了自杀,他们派成一个圆圈,从


某个人开始,沿着圈报数,每报第N个人就离开圆圈去自杀,Josephus不想死,所


以他制定了规则,以使成为最后一个离开圆圈的人。如果是N个人,他在第M个位置


,他应该让他们用什么数来进行报数呢?


现在简单一下问题,如果是20个人,报数5的话,谁在最后呢?如果实现了该功能


,那么N个人,在第M个位置,需要报什么书可以成为最后一个人的问题也就等于OK


了。


下面是代码实现(如果是20个人,报数5的话,谁在最后呢?)



队列请参照 http://hnlzpsh128.itpub.net/post/18675/244715


using System;
using System.Collections.Generic;
using System.Text;


namespace StructTest
{
/// <summary>
///
/// AoiUmi的Josehpus问题DEMO
///
/// Create 20061226
///
/// personCount个人围成一个圈,从一个人开始报数(1,2,3.....),
/// 报到personNo的人出线,剩下的人组成新圈,
/// 从出线的这个人的下个人再开始报数(1,2,3.....)
/// 继续。直到圈剩下1个人为止
/// </summary>
class Josehpus
{
//总共有personCount人
private int personCount = 7;
//报数personNo的人出线
private int personNo = 4;
private Queue q = new Queue();


public Josehpus(int count,int no)
{
personCount = count;
personNo = no;
}
public void CreateQueen()
{
for (int i = 0; i < personCount; i++)
q.InsertNode(new Node(null, null, i,"No" + (i+1).ToString()));


q.QueenClose();
//下面语句测试用
//q.ViewQueenName();
//Console.Read();
}
//开始,出线的人,按顺序输入
public void DoJosehpus()
{
//终止重复操作
//条件是队列中只剩下1个人
if (q.Root.PreNode.NextNode.Equals(q.Root.PreNode))
{
Console.WriteLine("最后留下来的人名字:" + q.Root.PreNode.Name);
return;
}
//结点中记录报数的NodeValue 需要清空
//为了不影响下轮报数
ClearQueenData();


int j = 1;//从1开始报数
for (Node i = q.Root.PreNode; true; i = i.NextNode)
{
i.NodeValue = j++;
//处理报了no数的人
if (i.NodeValue.Equals(personNo))
{
//出线
q.DeleteNode(i.NodeValue);
//ViewQueenData();
//下次从他的下个人开始报数
InitRoot(i.NextNode);
//显示出线的人的姓名
Console.WriteLine(" " + i.Name + " ");



//重复
DoJosehpus();
}
}
}
public void ClearQueenData()
{
for (Node i = q.Root.PreNode; i != q.Root.PreNode.PreNode; i = i.NextNode)
{
i.NodeValue = "";
}
}
//设置出线的下个人下次开始报数
public void InitRoot(Node n)
{
q.Root.PreNode = n;
q.Root.NextNode = q.Root.PreNode.PreNode;
}
}
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么冬天人的皮肤很干燥?
黄陂区武汉天河街道城市管理所在哪里啊,我有
求花与中国文化的论文一篇
电脑突然间不读xp系统盘了,怎门办?
提亚斯怎么样?技能是怎么样的?
多吃生西红柿好么
三台电脑,一个路由器,为什么我把线插到我的
大冶市黄石美视达眼镜(湖滨路店)这个地址在什
诺基亚N73总坏储存卡
什么是留守儿童,怎样算是合格农村留守儿童
sql2005 表的创建时间怎么修改
谁带我转散打 我浙江二的
尉氏县开封一品砂锅(自由路店)这个地址在什么
大话号被盗,密码和密保被改怎么找回?
当一个男人总说喜欢你却又说怕你打扰,你猜猜
推荐资讯
浙江3 龙鸣力量10 体力12多少钱啊
英语四级难在哪里?
我会员VIP2 超级QQ黄金等级3那等级加速怎么算
关于温暖的美文
會員過期後群會消失嗎?
离婚保证书格式怎么写,民政局离婚证明范本具
怎么在百度上发图片?
郭敬明是LV的代言人吗?
英雄岛 25拉锯武狂买哪些士气装备
找两首类似的歌
几道物理题,求答案,要解释
谁知道这些歌的名字?谢!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?