批处理解约瑟夫环应用题

题目如下

有二十九个女生(分别用1-29号来称呼)围成一圈玩报数游戏,规则是这样的:从1开始数数,当数到3的这个人就退出游戏,而她后面的人接着从1数。。。如此一直到最后剩下一个人,现在知道最初是从13号女生开始的游戏,问最后剩下的会是第几号女生?

编写代码

#! /bin/bash

N=29 # 总人数
M=13 # 开始号数
B=3  # 间隔3人死亡一次# 初始化信息1-alive,0=dead
i=0
while [ ${i} -lt ${N} ]
doperson[${i}]=1let i++
doneecho "================start====================="
echo "${#person[@]} 人"
echo "开始号数:${M}"
echo "间隔 ${B} 人死亡一次 "
echo "=========================================="# 踢出人
leavePerson=${N}
let m=${M}-1   #数组下标为0
b=${B}# 踢出只剩下一个人位置
until [ ${leavePerson} -eq 1 ]
do# 每隔三个人死亡一个人if [ ${b} -eq ${B} ]then# 踢出具体的某一个活人until [ ${person[${m}]} -eq 1 ]dolet m++let m=${m}%${N} #防止数组越界done# 死亡echo "`expr $m + 1` 死亡"person[${m}]=0# 玩家人数减一let leavePerson--# 重新计数let b=1else#报数 until [ ${person[${m}]} -eq 1 ]dolet m++let m=${m}%${N} #防止数组越界donelet b++filet m++let m=${m}%${N} #防止数组越界
done# 找到最后一个人
index=0
while [ ${index} -lt ${N} ]
doif [ ${person[${index}]} -eq 1 ]thenbreakfilet index++
doneecho "=================end======================"
echo "标号为:`expr ${index} + 1` 活着"
echo "=========================================="

运行结果

思路

  • 定义一个数组,所有值初始化为1,1表示活着,0表示死亡
  • 间隔3死亡
  • 输出最后一个活着

参考文档

数组使用:http://www.runoob.com/linux/linux-shell-array.html
until使用:http://www.runoob.com/linux/linux-shell-process-control.html

批处理解约瑟夫环应用题-shell相关推荐

  1. c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题 N个人围成一圈 - phpStudy...

    详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...

  2. 用数学方法解约瑟夫环

    5.5.4  用数学方法解约瑟夫环 原文:http://book.51cto.com/art/201403/433941.htm 上面编写的解约瑟夫环的程序模拟了整个报数的过程,程序运行时间还可以接受 ...

  3. python解约瑟夫环问题

    故事: 约瑟夫问题(Josephus Problem)据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人 ...

  4. C语言约瑟夫报数出圈算法,详解约瑟夫环问题及其相关的C语言算法实现

    约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推. 请按退出顺序输出每个退出人的原序号 算 ...

  5. 顺序表类的声明java_顺序表实现解约瑟夫环_Java

    今天我们来使用顺序表类求解约瑟夫(Josephus)环问题. 首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人 ...

  6. java约瑟夫环链式结构_顺序表实现解约瑟夫环_Java | 学步园

    今天我们来使用顺序表类求解约瑟夫(Josephus)环问题. 首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人 ...

  7. C语言解约瑟夫环问题(随机密码版)

    本文将用数组求解约瑟夫环问题. 题目描述 编号为1,2,3,--n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序 ...

  8. 人类高质量代码解约瑟夫环问题

    n个人(0,1,2,3,4-n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,-m这样报的).下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人 ...

  9. java 实现约瑟夫环

    这一次是借鉴模仿别人写的代码,以前觉得不好将数据结构的链结构什么的迁移到java上来使用,但这一次确实让我感受到了可以自己构造数据结构,然后使用类似链的方式来解决约瑟夫环,有所顿悟.不多说,继续上代码 ...

最新文章

  1. Python 库突发 PyPI 危机!
  2. 测试系统存储是大端模式还是小端模式的方法
  3. java的输出的例子_Java例子:万年历的输出
  4. ifm virtual check part3
  5. android图片加载库Glide
  6. 选了combobox里的选项后没激发change事件_stata 事件分析法
  7. LeetCode 717. 1比特与2比特字符
  8. Apache JMeter 菜单说明
  9. matlab 怎么使用function,Matlab怎么调用函数 自定义函数使用方法
  10. python有什么用途-Python是什么 Python的用处
  11. android打造一个简单的欢迎界面
  12. Nexus3 私服搭建和配置
  13. c++ primer 5学习小结
  14. linux系统棋牌搭建教程,幼麟棋牌四川麻将搭建教程补充
  15. python中的pymysql_Mysql在python中的使用:pymysql
  16. idea 删除当一行或者选中行的快捷键
  17. 瑞幸咖啡上市被评“蒙眼狂奔”,CEO钱治亚回答:狂奔是真的,但并非蒙眼
  18. 华为ensp配置AC+AP多个SSID信号
  19. 【编程马拉松】【014-红与黑】
  20. 在padavan运行wifidog

热门文章

  1. 设计模式——门面模式(Facade Pattern)
  2. 大数据论文_03_BigTable(个人总结)
  3. Rabbit health check failed
  4. 川崎机器人51381报警案例
  5. Linux基础笔记11 | 链接文件详解
  6. 阿里巴巴的“旺信”上线
  7. 阿里云服务器CPU超分型专有宿主机创建v5实例
  8. java求美国数学家的年龄,第二届世界顶尖科学家论坛最年轻的参会者只有15岁
  9. 2. Golang基本语法
  10. 工信部信息技术发展司谢少锋司长高度评价华云数据“自主创新”的钻研精神