算法 js 解決約瑟夫問(wèn)題

 //length表示總?cè)藬?shù)
 //start表示從第幾個(gè)人開(kāi)始
 //th表示數(shù)到幾消亡 
function Joseph(length,start,th=3){
  if(start>length){
    console.log("ERROR:開(kāi)始位置大于總長(zhǎng)度");
    return
  }
//首先建立一個(gè)數(shù)組 數(shù)組中的1表示存在者;0表示消亡者
  var array=[];
  for(let i=0;i<length;i++){array.push(1);}
// count表示報(bào)數(shù)到了幾;
// sum表示還剩下幾個(gè)人;
// pos表示報(bào)數(shù)者的位置;
  var pos=start-1;
  var sum=length;
  var count=0;
//   當(dāng)就剩下一個(gè)人的時(shí)候 停止報(bào)數(shù)
  while(sum>1){
    count+=array[pos];
//  當(dāng)報(bào)數(shù)者為th的時(shí)候 該報(bào)數(shù)者消亡 總?cè)藬?shù)-1 報(bào)數(shù)重置為0
    if(count===th){         
      array[pos]=0;
      sum--;   
      count=0;
    }

//  當(dāng)一輪報(bào)數(shù)完畢時(shí)候 從頭再繼續(xù)報(bào)數(shù)
    if(pos===length-1){
      pos=0;   
    }
    else{
      pos++
    } 
  }
//  報(bào)數(shù)完畢后 輸出最后幸存者的索引值
  console.log("幸存者位置為:"+(array.indexOf(1)+1))
}
 Joseph(4,6);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容