码迷,mamicode.com
首页 > 其他好文 > 详细

约瑟夫环问题

时间:2017-06-01 16:51:45      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:mod   它的   while循环   div   rac   pre   rem   http   void   

     约瑟夫环问题:50个人围成一圈,数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少?

思路例如以下:

1)首先,把数据填充到数组或链表中。

2)用一个while循环进行出圈。直到仅仅剩下一个元素留下。

代码例如以下:

package cn.wuhan.unit7;
import java.util.*;
public class YueSeFu {
	
	public static int cycle(int total,int k){
		List<Integer> dataList = new LinkedList<Integer>();//创建一个链表
		for(int i=0;i<total;i++) //加入数据成员
			dataList.add(new Integer(i+1));
		int index=-1;
		//循环
		while(dataList.size()>1){
			index  = (index+k)%dataList.size();//以(index+k)对size()取余
			dataList.remove(index--);
		}
		return ((Integer)dataList.get(0).intValue());//返回它的值
	}
	
	public static void main(String[] args) {
		System.out.println("该人原来的位置是: "+cycle(50,3));

	}

}


效果例如以下:

     技术分享

约瑟夫环问题

标签:mod   它的   while循环   div   rac   pre   rem   http   void   

原文地址:http://www.cnblogs.com/slgkaifa/p/6929125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!