import java.util.Scanner;
/*题目:有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,
问最后留下的是原来第几号的那位。 */
public class NumberOff {
static int GetNumber(int arr[],int n)
{
int count=n;//圈中剩余人数
int flag=0;//报数:1~3
int pos=0;//存储最后一人位置
for(int i=0;i<n;i++)//初始化数组,1表示在圈中,0表示不在圈中
{
arr[i]=1;
}
for(int j=0;;j++)//循环转圈
{
if(j==n) j=0;//若报到第n+1个人,从头开始
if(arr[j]!=0) flag++;//报数
else continue;
if(flag%3==0)
{
count--;//报数为3,退出
arr[j]=0;
}
if(count==1) break;//剩余人数为1,退出
}
for(int k=0;k<n;k++)//判断最后一人位置
{
if(arr[k]==1)
pos=k;
}
return pos;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入人数:");
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int arr[]=new int[n];//开辟数组
System.out.print("最后一人位置:"+(GetNumber(arr,n)+1));
input.close();
}
}
JAVA经典50题(37)
最新推荐文章于 2023-07-23 15:30:34 发布
本文介绍了一个基于Java实现的报数游戏算法,通过循环和条件判断,模拟多人游戏过程,找出最后留在圈中的玩家编号。游戏规则为从1到3报数,报到3的玩家退出,直至只剩一人。
10万+

被折叠的 条评论
为什么被折叠?



