这是一个典型的“约瑟夫环”问题。我们用数组来解决。
- 首先我们需要定义一个“箭头”用来在这个环中数,并淘汰人,并且在一圈结束后从新开始,形成一个视觉上的环。
- 解决出局之后的数字问题,最简单的方法是删除出局数字的位置。如果是链表就会显得非常的简单。
package 课后习题;
public class zuoye56 {
public static void main(String[] args) {
int []a=new int [30];
int n=30,k=0,y=1; //定义了总apple数,设置k为指向的箭头,y是设置的停止的标准
for(int i=0;i<30;i++)
a[i]=i+1;
do
{
k=(k+12)%n; //用来循环数的
System.out.println(y+"出局的第"+a[k]+"号苹果");
for(int j=k;j<n-1;j++)
a[j]=a[j+1];
n--;
y++;
}
while(y<=15);
}
}
上面就是我所写的代码只要在相应的位置放上红苹果就可以解决问题了。