美文网首页
算法 js 解决约瑟夫问题

算法 js 解决约瑟夫问题

作者: Jassi | 来源:发表于2018-02-03 17:39 被阅读0次
 //length表示总人数
 //start表示从第几个人开始
 //th表示数到几消亡 
function Joseph(length,start,th=3){
  if(start>length){
    console.log("ERROR:开始位置大于总长度");
    return
  }
//首先建立一个数组 数组中的1表示存在者;0表示消亡者
  var array=[];
  for(let i=0;i<length;i++){array.push(1);}
// count表示报数到了几;
// sum表示还剩下几个人;
// pos表示报数者的位置;
  var pos=start-1;
  var sum=length;
  var count=0;
//   当就剩下一个人的时候 停止报数
  while(sum>1){
    count+=array[pos];
//  当报数者为th的时候 该报数者消亡 总人数-1 报数重置为0
    if(count===th){         
      array[pos]=0;
      sum--;   
      count=0;
    }

//  当一轮报数完毕时候 从头再继续报数
    if(pos===length-1){
      pos=0;   
    }
    else{
      pos++
    } 
  }
//  报数完毕后 输出最后幸存者的索引值
  console.log("幸存者位置为:"+(array.indexOf(1)+1))
}
 Joseph(4,6);

相关文章

  • 算法 js 解决约瑟夫问题

  • 算法面经---单向循环链表(解决约瑟夫问题)

    单向循环链表--解决约瑟夫问题 一、单向循环链表的应用场景 1.1 问题描述 Josephu(约瑟夫、约瑟夫环) ...

  • 算法之约瑟夫问题

    把我上学时候在csdn上的笔记搬过来了,便于自己查找 经典的约瑟夫问题 题目:假设下标从0开始,0,1,2 .. ...

  • 递归解决约瑟夫问题

    一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第...

  • 单向链表解决约瑟夫问题

    1.什么是约瑟夫问题? 2.约瑟夫问题的解决方式通过单向循环链表解决,具体思路如下: 3.单向循环链表的使用场景 ...

  • 算法题—约瑟夫环问题

    前言 本文编程语言使用Java 问题概述 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕...

  • 约瑟夫算法

    1.约瑟夫算法:约瑟夫环:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的 人开始报数,...

  • 约瑟夫算法

    约瑟夫环问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的...

  • 约瑟夫问题的一个简单java实现

    约瑟夫问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约...

  • PHP解决约瑟夫环问题

网友评论

      本文标题:算法 js 解决约瑟夫问题

      本文链接:https://www.haomeiwen.com/subject/uoguzxtx.html