//先封装一下队列的一些方法
function Queue() {
this.items = []
};
Queue.prototype.enqueue = function (element) {
this.items.push(element)
}
Queue.prototype.dequeue = function () {
return this.items.shift();
}
Queue.prototype.size = function () {
return this.items.length
}
Queue.prototype.front = function () {
return this.items[0]
}
// 击鼓传花规则:一群朋友围在一起做游戏,开始数数,数到某个数字的人自动淘汰,最后剩下的这个人胜利,借助输出这个人的索引值
function passGame(namelist, num) {
// 1.啥都先别想,先创建一个队列结构
var q = new Queue();
// 2.将所有人都加入到队列结构中去
for (var i = 0; i < namelist.length; i++) {
q.enqueue(namelist[i])
}
// 3.所有人开始数数字,如果不是num的话移到队列末尾,如果是num的话从队列中删除
while (q.size() > 1) {
for (var j = 0; j < num - 1; j++) {
q.enqueue(q.dequeue())
}
// 4.num对应的这个人,把他从队列中移除出去
q.dequeue()
}
// 5.获取最后剩下的那个人
var endname = q.front();
return namelist.indexOf(endname)
}
用队列方式实现击鼓传花(JavaScript)
最新推荐文章于 2022-07-31 22:22:10 发布