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) );
}
}