1.
2.思路:小孩报数与约瑟夫问题类似,但是要确定从哪个小孩开始,输出的是删除的元素
3.代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
//小孩报数
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//输入小孩的个数
List<String> lis1=new ArrayList<String>();
for(int i=0;i<n;i++)
{
lis1.add(sc.next());//输入小孩的名字
}
String[] t=sc.next().split(",");
//输入一个字符数组2,3
int W=Integer.parseInt(t[0]);//从w开始报数
//将整型数据Integer转换为基本数据类型int
//"2"转换成2
int S=Integer.parseInt(t[1]);//s是报数时截至的数
for(int i=0;i<W-1;i++)//从w开始
{
lis1.add(lis1.remove(0));//删除头元素添加到尾巴
}
for(int i=0;i<n;i++)//总共n个人
{
for(int j=0;j<S-1;j++)//数报到s
{
lis1.add(lis1.remove(0));//删除的第一个元素添加到末尾
}
System.out.println(lis1.remove(0));//按顺序输出删除的个数
}
}
}