Josephus问题(圆桌骑士)

JS版圆桌骑士(Knights of the round re-edition)完整源代码 v0.1.3 Knights of the round re-edition DEMO v0.1.3 Source Options: Turbo AutoSkipFrame Mute Pause Flash 0.5x 1x 1.5x 2x 3x 4x How to play: <W S A D> Move <J> Attack <K> Jump <P> Pause Try combo keys to discover more skills! 立即下载
#define OK 1
#define ERROR 0
#include <iostream.h>
#include <malloc.h>
int N; //骑士总数
typedef int Status;
//定义循环链表
typedef struct LNode{
  int data;
  LNode *next;
}LNode,*LinkList;
//构造空循环链表
Status InitList(LinkList &L){
  L=(LinkList)malloc(sizeof(LNode));
  L->next=L;
  return OK;
}
//第i个位置之前插入元素e
Status ListInsert(LinkList &L,int i,int e){
  if(i<1) return ERROR; //插入位置不合理
  int j=0;
  LinkList p=L,s;
  while(j<i-1){ //寻找第i-1个结点
    p=p->next;
    j++;
  }
  s=(LinkList)malloc(sizeof(LNode)); //生成新结点,插入L中
  s->data=e;
  s->next=p->next;
  p->next=s;
  return OK;
}
//删除结点s
Status ListDelete(LinkList &L,LinkList &s){
  LinkList p=L;
  while((p->next)!=s){ //寻找结点s
    p=p->next;
  }
  p->next=s->next; //删除结点s
  if(s==L) L=s->next;
  free(s);
  return OK;
}
//初始化循环链表
Status PutList(LinkList &L){
  int i;
  L->data=1;
  for (i=2;i<=N ; i++){
  ListInsert(L,i-1,i);
  }
  return OK;
}
//取第i个结点的地址,赋给结点s
Status GetElem(LinkList L,int i,LinkList &s){
  if(i<1) return ERROR; //位置不合理
  int j=1;
  LinkList p;
  p=L;
  while(j<i){ //寻找第i个结点
    p=p->next;
    j++;
  }
  s=p;
  return OK;
}
//数i个结点,删除最后数的结点,返回后面结点的地址
Status ElemCount(LinkList &L,int i,LinkList &s){
  LinkList p=s;
  while(i!=1){ //数i个结点
    p=p->next;
    i--;
  }
  s=p->next; //结点s返回后面结点的地址
  cout<<p->data<<' ';
  ListDelete(L,p); //删除最后数的结点
  return OK;
}
//Josephus问题
void Josephus(int k,int m){
  int total=N;
  LinkList L,s;
  InitList(L);
  PutList(L);
  GetElem(L,k,s);
  while(total!=1){ //直到只剩一人,循环结束
    ElemCount(L,m,s);
    total--;
  }
  cout<<endl<<"留下的骑士是"<<L->data<<endl;
}
//主函数
void main(){
  int k,m;
  char flag='y';
  while(flag=='y'){
  cout<<"输入骑士个数,开始数的位置,每次数的人数:";
  cin>>N>>k>>m;
  cout<<"骑士离开的顺序为:";
  Josephus(k,m);
  cout<<"你想再试一次吗(按y继续): ";
  cin>>flag;
  cout<<endl;
  }
  cout<<"程序结束."<<endl;
} 
以圆桌骑士为例浅尝HTML5游戏开发 随着XHTML的逐渐式微,Chrome,Safari,FireFox,Opera等现代浏览器正在积极完善HTML5实现,IE9也加入到标准的行列并将在今年上半年发布正式版,HTML5时代来临了。在各种HTML5特性中,最吸引人的莫过于canvas标签,其提供的绘图API将颠覆以往web表现力匮乏的形象。随着浏览器对canvas的普遍支持,利用canvas实现的web应用会出现爆发性的增长。本人尝试了使用canvas开发2d卷轴游戏,与大家分享。本文将不介绍canvas2dAPI的用法,如果想了解canvas2dAPI请访问:尝试制作的游戏是KnightsoftheRound圆桌骑士。圆桌骑士( 立即下载

相关推荐

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

face light~ 917

圆桌骑士问题

很多世纪以前,阿瑟王和他的圆桌武士常在每年元旦聚会庆祝他们的友谊。我们用一个单人玩的棋盘游戏去纪念这个史实:一个国王和多个武士被随机放在8X8的正方形棋盘的不同方格上。只要不越出棋盘,国王可以移至与之相邻的方格内,只要不越出棋盘,武士可以跳日字,在棋局当中,选手可以在同一方格内摆放多个棋子,选手的目标是在尽可能少的步数内把所有的棋子集中到同一方格。为此,他必须按前述方法去移动棋子。此外,当...

weixin_33940102的博客 843

李沐之数值稳定性+模型初始化和激活函数

层记为t,这里的y不是预测,还包括了损失函数,y是优化函数,不是预测的结果y。第t层是输出。所有的h都是一些向量,向量关于向量的导数是一个矩阵,所以用了很多次的矩阵乘法,出问题就在这里。

m0_51133942的博客 1527

LA 3523 圆桌骑士

每一部分知识简单,合起来就容易出错了,慢慢敲,快了错误率以指数级别#include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int MAXN = 1007; bool g[MAXN][MAXN]; bool odd

MakingMaker的专栏 1481

从零搭建VGGNet

在 forward 方法中实现了前向传播过程,包括卷积、激活、池化和平铺操作,最后通过全连接层得到分类结果。使用 torch.onnx.export 将模型导出为 ONNX 格式的文件 vgg.onnx。导出 ONNX:将模型导出为 ONNX 格式,便于在其他平台或框架中使用。定义 VGG 网络:构建了一个包含多个卷积层、池化层和全连接层的网络。使用 torch.save 将整个模型保存为 vgg.pth 文件。前向传播:对输入数据进行前向传播,得到输出结果。保存模型:将模型保存为 .pth 文件。

开源驱动,创造价值;坦诚清晰,快速失败;让复杂可计算。 522

让 AI 学会“慢思考”:MCP Sequential Thinking 深度部署与使用指南

摘要: MCP Sequential Thinking 是一种让AI具备"慢思考"能力的技术,通过动态调整思维路径解决复杂问题。本文详细介绍了在Windows、macOS和Linux系统下的部署方法,包括环境准备、配置文件修改等步骤。该技术通过"产生想法-评估需求-修正路径"的循环机制,显著提升AI在代码设计、数学证明等复杂任务中的表现。文章还提供了验证安装方法、使用示例和常见问题解答,帮助开发者解锁AI的深层思考能力。(149字)

weixin_43236925的博客 1913

约瑟夫问题

  约瑟夫问题 作者:Ackarlix      这是一个非常经典的问题:n个骑士编号1,2,...,n,围坐在圆桌旁,编号为k的骑士从1开始报数,报到m的骑士出列,然后下一个位置再从1开始报数,找出最后留在圆桌旁的骑士编号。    这个问题可以用没有头结点的循环链表解决,数据域存放骑士的编号,出列的骑士,删除其对应的结点,最后剩下的那个结点就是问题所求的骑士编号。程序

Ackarlix的专栏 2759

[ROS] rviz 可视化工具

[ROS] rviz 可视化工具 摄像头没讲 文章目录[ROS] rviz 可视化工具1. todo2. todo*. 参考*. 问题解决*. rough 1. todo 2. todo *. 参考 *. 问题解决 *. rough roscore + rviz

weixin_37834269的博客 2052

PTA练习之约瑟夫问题

Josephus 问题描述:编号为1,2,…,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的那个人出列,将他的密码作为新的m值,从他顺时针方向的下一个人开始重新从1报数,数到m的那个人又出列;如此下去,直至圆桌周围的人全部出列为止。要求按出列顺序输出n个人的编号。 输入格式: 第一行输入两个整数,依次表示人数n和初始化密码m,以空格间隔。 第二行依次输入n个整数,分别表示n个人的密码

xyycrossworld的博客 3605

基于Simulink雷达系统建模仿真(附源码)

此示例显示如何设置由发射器、带目标的信道和接收器组成的雷达系统仿真。一、系统架构该系统包括:雷达脉冲发生器,以 2% 占空比(导通时间 = 2 ms,周期 = 100 ms)输出功率为 1 mW 的啁啾声。RF发射器部分由滤波器和组成,使用RF模块集电路包络库模块实现。由于滤波器是线性器件,放大器是非线性器件,因此它们被分成两个独立的子系统。这种分离允许在每个子系统中使用不同的仿真频率集。这种分离还允许在更快的仿真速度和级联链中可用的级间负载效应损失之间进行权衡。

珞瑜的博客 4583

MIPI CSI-2

来源:公众号瓜大三哥版权归三哥所有1 MIPI简介2 MIPI CSI-2简介2.1 MIPI CSI-2 的层次结构2.2 CSI-2协议层2.3 打包/解包层2.4 ...

OpenFPGA的博客 2115

约瑟夫问题求解

历史学家约瑟夫有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而约瑟夫和他的朋友并不想遵从,约瑟夫要他的朋友先假装遵从,他...

weixin_33978016的博客 124

Open3D 模拟退火算法优化的ICP点云配准

传统ICP算法易陷入局部最优且对初始位姿敏感,而SA算法通过概率性接受劣解,能够在高温阶段广泛探索解空间,低温阶段精细收敛。

点云侠的博客 244

约瑟夫问题【1】

题目:n个人围成一圈,顺序排号,从第1个人(编号为0的人)从1开始报数,报到m(m<=n)的人出圈,然后下面未出圈的人接着从1开始报数,直到所有人都出圈。请按出圈顺序输出出圈的人的编号。 代码如下: 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int i, k, ...

weixin_34088583的博客 193

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JS版圆桌骑士DEMO

同学们,我参加了IE9开发大赛,作品是网页版圆桌骑士,喜欢的话帮忙投票吧! [url=http://ie9.onlinevoc.cn/contest/PercodPage.aspx?ID=43]http://ie9.onlinevoc.cn/contest/PercodPage.aspx?ID=43[/url] 请使用IE9 beta,Chrome7+, Safari5+, FF3.6+ ...

takuma889的博客 316

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

圆桌骑士

有n个骑士经常举行圆桌会议,商讨大事。每次圆桌会议至少有3个骑士参加,且相互憎恨的骑士不能坐在圆桌的相邻位置。如果发生意见分歧,则需要举手表决,因此参加会议的骑士数目必须是大于1的奇数,以防止赞同和反对票一样多。知道那些骑士相互憎恨之后,你的任务是统计有多少骑士不可能参加任何一个会议

Phanyuc的博客 933

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

POJ2942

Problem : Knights of the Round Table Description : 有N个要围着圆桌武士开会,敌对关系的武士不能坐在一起。而且,一个桌子上的武士人数必须是奇数。现在问你最少要开除多少武士才能开会。 Solution : 点双连通分量+二分图奇圈判定+标记。这个题目我参考了这位大牛的博客和刘汝佳的书。 首先我们要建立补图,把能坐在一起的武士连边。然

FlushHip 724

约瑟夫环问题(Josephus)

问题描述:设有编号 1,2,···,n 的 n(n>0)个人围成一个圈,从某个人开始报数,报到 m 时停止报数,报 m 的人出圈,再从他的下一个人起重新报数,报到 m 时停止报数,报 m 的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定 n 和 m 后,设计算法求 n 个人出圈的次序。 在解决这个问题之前,我们先来了解一个小故事。 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也

m0_57587757的博客 2969

圆桌骑士 图的连通性

步骤: 1.先将没有仇恨的骑士两两建边。 2.求一遍双联通分量。 3.在同一联通分量里面找奇环,若该联通分量存在奇环,则该联通分量的任意两点都可以形成奇环。(下面有证明) 步骤三的证明: 1.首先明确:若存在奇环,则奇环上任意点必存在两条路径可以到达,而且长度必为一奇一偶。 2.所以如果再添加一个点或几个的话,他们必与此环有联通,且存在两条路径。 3.若单看这新添加的这几个点

Heaven_zao的博客 708

POJ 2942 圆桌骑士问题。

Knights of the Round Table Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 8785   Accepted: 2813 Description Being a knight is a very attractive career: search

_rabbit的专栏 1679

约瑟夫问题——C语言实现

约瑟夫问题 约瑟夫问题简述 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。 代码实现 #include <stdi...

可爱的LYF的博客 1万+

UVALive 3523 圆桌骑士

题目大意:有n个骑士经常举行圆桌会议,每次圆桌会议至少要有3个骑士参加(且每次参加的骑士数量是奇数个),且所有互相憎恨的骑士不能坐在圆桌旁的相邻位置,问有多少个骑士不可能参加任何一个会议思路,首先根据给出的憎恨图得出补图,然后就是找出不能形成奇圈的点 利用下面二个定理: 1.如果一个双连通分量的某些顶点在一个奇圈中(即双连通分量含有奇圈),那么这个双连通分量的其他顶点也在这个奇圈中 2.如果一个双连

cquzhengdayday的博客 505

Josephus约瑟夫环问题

求解Josephus问题:设有n个数构成一个环链,现从第k个数开始数数,数到m的那个数被弹出,然后从该数的下一个数重新开始数数,数到m的那个数又被弹出,如此重复,直到所有的数均被弹出为止。输出这些数弹出的序列。#include #include #define MAXSIZE 100typedef struct Node { int no; int m; struct Node *next;} N

studydaydayup的专栏 944

圆桌骑士题解

SP2878 圆桌骑士 题意: 思考过程:讲真,刚看到这题的时候以为肯定跟种类并查集有关,还是太固化思维了,瞄了瞄题目,看见奇环还是有点懵逼,然后蓝书上这题是作为无向图的双连通分量的例题,如果这个题目跟图有关,那肯定是相互不讨厌的人之间建一条边,考虑了一下无向图的双连通分量的性质,任两点间存在两条不同的路,感觉好像没啥关系…然后我就看了下面的解析 自己理解,有误请指出,谢谢~ 正解:互补讨厌的人之间建立一条双向边,题目能够转化为求不在任何一个简单奇环上的节点个数,关键就是简单奇环,这就是我没想到的地方,为什

小白菜的博客 600
上一篇: DOS常用命令
lulei_java
博客等级 码龄20年 5粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值