批处理解约瑟夫环应用题-shell
批处理解约瑟夫环应用题
题目如下
有二十九个女生(分别用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相关推荐
- c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题
N个人围成一圈 - phpStudy...
详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...
- 用数学方法解约瑟夫环
5.5.4 用数学方法解约瑟夫环 原文:http://book.51cto.com/art/201403/433941.htm 上面编写的解约瑟夫环的程序模拟了整个报数的过程,程序运行时间还可以接受 ...
- python解约瑟夫环问题
故事: 约瑟夫问题(Josephus Problem)据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人 ...
- C语言约瑟夫报数出圈算法,详解约瑟夫环问题及其相关的C语言算法实现
约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推. 请按退出顺序输出每个退出人的原序号 算 ...
- 顺序表类的声明java_顺序表实现解约瑟夫环_Java
今天我们来使用顺序表类求解约瑟夫(Josephus)环问题. 首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人 ...
- java约瑟夫环链式结构_顺序表实现解约瑟夫环_Java | 学步园
今天我们来使用顺序表类求解约瑟夫(Josephus)环问题. 首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人 ...
- C语言解约瑟夫环问题(随机密码版)
本文将用数组求解约瑟夫环问题. 题目描述 编号为1,2,3,--n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序 ...
- 人类高质量代码解约瑟夫环问题
n个人(0,1,2,3,4-n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,-m这样报的).下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人 ...
- java 实现约瑟夫环
这一次是借鉴模仿别人写的代码,以前觉得不好将数据结构的链结构什么的迁移到java上来使用,但这一次确实让我感受到了可以自己构造数据结构,然后使用类似链的方式来解决约瑟夫环,有所顿悟.不多说,继续上代码 ...
最新文章
- Python 库突发 PyPI 危机!
- 测试系统存储是大端模式还是小端模式的方法
- java的输出的例子_Java例子:万年历的输出
- ifm virtual check part3
- android图片加载库Glide
- 选了combobox里的选项后没激发change事件_stata 事件分析法
- LeetCode 717. 1比特与2比特字符
- Apache JMeter 菜单说明
- matlab 怎么使用function,Matlab怎么调用函数 自定义函数使用方法
- python有什么用途-Python是什么 Python的用处
- android打造一个简单的欢迎界面
- Nexus3 私服搭建和配置
- c++ primer 5学习小结
- linux系统棋牌搭建教程,幼麟棋牌四川麻将搭建教程补充
- python中的pymysql_Mysql在python中的使用:pymysql
- idea 删除当一行或者选中行的快捷键
- 瑞幸咖啡上市被评“蒙眼狂奔”,CEO钱治亚回答:狂奔是真的,但并非蒙眼
- 华为ensp配置AC+AP多个SSID信号
- 【编程马拉松】【014-红与黑】
- 在padavan运行wifidog
热门文章
- 设计模式——门面模式(Facade Pattern)
- 大数据论文_03_BigTable(个人总结)
- Rabbit health check failed
- 川崎机器人51381报警案例
- Linux基础笔记11 | 链接文件详解
- 阿里巴巴的“旺信”上线
- 阿里云服务器CPU超分型专有宿主机创建v5实例
- java求美国数学家的年龄,第二届世界顶尖科学家论坛最年轻的参会者只有15岁
- 2. Golang基本语法
- 工信部信息技术发展司谢少锋司长高度评价华云数据“自主创新”的钻研精神