约瑟夫环问题
来源:互联网 发布:matlab2014b for mac 编辑:程序博客网 时间:2024/06/05 03:50
约瑟夫环问题:N个人围城一圈,开始报数,报到M的人出局,然后重新开始报数,问最后出局的人是谁?
Java版
public class Josepth { public static void main(String[] args){ int n = 5;//总数 int m = 2;//出列的数字 int[] arr = new int[n]; //初始化数字,也即每个人的编号,从1开始 1....n for(int i = 1;i <= n ;i++ ){ arr[i-1] = i; } System.out.println(Arrays.toString(arr)); int remain = n;//剩余人数 int current = 1;//当前报数 //一直循环直到剩余1人 while(remain > 1){ for(int i = 0;i<n;i++){ if(arr[i] == -1){ //该位置的人已出局 continue; } //如果当前报数恰好是出列的数字 if(current== m){ arr[i] = -1;//该位置的人出局 current = 1;//报数从新从1开始 remain --;//剩余人数减少 System.out.println(Arrays.toString(arr)); } else{ current++;//报数继续 } } } System.out.println(Arrays.toString(arr)); }}
Python版
total = raw_input("input total number: ")num = raw_input("input hit number: ")print "%s,%s" %(total,num)current = 1index = 1arr = range(1,int(total)+1)while(len(arr)>1):if index == int(num):print "pop",arr[current-1]arr.pop(current-1)index = 1else:index = index +1current = current+1print "current,len(arr)",current,len(arr)if current > len(arr):current = 1print "result:"+str( arr[0])
阅读全文
0 0
- 约瑟夫问题、约瑟夫环
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 搜索文本内容——Java代码的简单实现(修改版)
- ztree搜索并且定位到搜索节点
- 【 poj 1961 】Period 【KMP 求所有前缀的循环节】
- python 常见的安装方式
- 微信机器人,关注回复,天气
- 约瑟夫环问题
- 关于多选框的全选与反选
- spring boot + security oauth2 + redis + mongodb 框架搭建
- matlab对于固定长度的行的文本,最后一行的读取
- P3819 松江1843路
- 【重磅推荐】MySQL大表优化方案(最全面)
- 圆桌会议(圆排列)
- Bootstrap Table使用整理(六)-常用操作
- 工厂方法(Factory Method)