Java用List实现约瑟夫环(纯代码)

import java.util.ArrayList;
import java.util.List;

public class Josephus {
	
	public static void main(String[] args){
		
		kill(10,4);
	}
	
	/**
	 * @param nums  人数
	 * @param length 步长
	 */
	public static void kill(int nums,int length){
		
		List<Integer> list = new ArrayList<>();
		
		//初始化list
		for(int i = 0 ; i < nums ; i++ ){
			list.add(i+1);
		}
		
		//打印囚犯
		System.out.println( list.toString() );
		
		//记录被杀的下标(需要求余-1)
		int indexKill = 0;
		
		//开始杀人
		while( list.size() > 1 ){
			indexKill += length;
			//得到被杀的下标
			indexKill = ( indexKill % list.size() ) - 1;
			
			//如果是被杀下标==list.size(),需要 特殊处理
			if( indexKill == -1 ){
				System.out.println( "把" + list.get( list.size() - 1 ) + "杀掉" );
				list.remove( list.size() - 1 );
				indexKill = 0;
			}else{
				System.out.println( "把" + list.get( indexKill ) + "杀掉" );
				list.remove( indexKill );
			}
		}
		
		System.out.println( "释放" + list.get(0) );
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38006520/article/details/82492839
今日推荐