当前您在:主页 > 模板教学 >

71.约瑟夫问题_C/C++语言程序百例

日期:2017-09-13   关注热度:℃  所属栏目: 模板教学

这是法国数学家蟑螂齐声背诵在《数字游玩》打中人家穿插。:15天主教徒和15 深海域打中非犹太人,半场的人不得已被扔到海里,其余者的将幸免于难上去,因而据我看来大大地:30独特的在人家丰满的里,从第一容貌结束当日广播开端,数到第九人,把他抛入大洋,刚过去的圆状物持续,直到只要15人依然。问以任何方式开端,因而每回你开始新的东西的时分,你都是人家不皈依宗教的人。。

问题剖析与算法设计
约瑟夫问题并不难,虽然有很多方式可以处置刚过去的问题。;刚过去的新闻提要有好多变换。。喂引见了一种使掉转船头方式。。
在新闻提要中,30独特的结合人家丰满的。,照着,朕在人家圆状物链,代表。你可以应用人家构架队列方式人家圆状物链。构架中有两个盟员。,人家是辨向下人家人的帮助。,方式环状链;第二的,因此 家属假设被扔进海里,在起作用的1,依然在船上。从第一容貌开端,数数还没有出现的人。,每回数到9,将构架打中奖章更代替0,那独特的被扔进了海里。刚过去的盘旋数直到15人扔进大洋。

条款笔记和评论
#include
struct node
{
int nextp; 辨向下人家人的帮助(下人家人的一大批下标)
int no_out; 被扔进海里的成绩?。1:不扔到海里。0:被扔进海里
关系[ 31 ] 30人,元素0未被应用
int main()
{
int i,j,k;
printf( original circle is(+:pagendom,基督教) ");
为(i = 1;i)<=30;i++) /*初始化构架一大批*/
{
关系[我]。nextp = I 1 帮助辨向下人家人(一大批元素下标)
关系[我]。no_out = 1 成绩设置为1。,要紧每独特的都在船上
}
关系[ 30 ]。nextp = 1 第三十容貌的帮助辨向第一容貌方式人家凛。
j=30; J:辨向一大批元素已处置,从人把[我]点计数
为(i = 0;i)<15;i++) /*i:已扔下海的人数计数器*/
{
for(k=0;;) k:确定把哪独特的扔进大海闩。
假定(K<15)
{
j=link[j].nextp; 修正帮助,诱惹下人家操纵
k+=link[j].no_out; /*举行计数。对那个被扔进海里的人来说,刚过去的规是0。
}
else break; 数到15终止计数
关系[J]。no_out = 0 拉环的定位球 0,表现该人被扔进海里
}
为(i = 1;i)<=30;i++) /*输出坐果*/
printf(%c,关系[我]。no_out? "@":"+"); 扔进海里, @:在船上*/
printf( ");
}

*运转坐果
The original circle 是( :非犹太人, 基督教)
+++@@+@+@@@+@+++@@+@@@+++@+@@+
人家被扔进船外的非人类 @:住在船上的船上的盟员

*询问
四周有N个孩子 在人家丰满的中递编号,校长命名M从第人家孩子动身。,优先的泄漏,他们的孩子了。此后从孩子没有人报数,把号码给儿童,把它弄浮现。,因而直到所局部孩子出去。找出孩子的按次。