大家帮我看看这段代码是怎么回事!
/**
题目:一个有n人的队列站成一排,依次报数,报3的人出列,下一位继续从1开始报数,报3的出去……
报完后再从头接着报,直到最后剩一个人,编程找出最后一个人原来排第几位。
*/
class Example_1
{
public static int find(int n)//n为队列的总人数
{
int []sequence = new int[n];//定义一个数组用来存放队列中人物所对应的编号
for(int q = 1; q <= n; q++)
{
sequence[q - 1] = q;//为队列中的每一个人按位置编号
}
int j = 2;//用j来记录每一轮出列的第一个人所在数组元素的下标
int i = j;
while(n > 1)//一直循环到最后一个人
{
for(i = j; i < n; i += 2)
{//这里步长设为2而不设为3是因为每次删除一个元素后数组整体前移一位,原来的下一位成了现在的当前位
for(int k = i; k < n - 1; k++)
{
sequence[i] = sequence[i + 1];//删除下标为i的数组元素
}
n -= 1;//删除后数组长度减1
}
j = i - n;//计算下一轮第一个要删除的人所在数组元素的下标
}
return sequence[0];//返回最后一个人原来的位置
}
public static void main(String[] args)
{
System.out.println(find(12));
}
}//未调试成功,与预期值不符(8以及大于10的值不相同)
为什么数字较小时正常,稍大一点就不行了呢?
...全文
相关推荐
百度地图api实例!让初入者明白怎么回事!
百度地图api !刚接触 迷惑了我一天 !看了这个之后才知道怎么回事!让自己快速入门!
Discuz! 忍帮圣诞风格
【标签】"网页模版"说明这个压缩包文件包含的是一个网站模板,用户可以将其应用于 Discuz! 论坛,快速改变论坛的整体外观,而无需深入代码进行复杂的自定义设计。
Discuz! 忍帮圣诞模板
"Discuz! 忍帮圣诞模板"是一款专为Discuz! 论坛系统设计的节日主题模板,主要用于在圣诞节期间为论坛增添浓厚的节日氛围。Discuz!
十分好用的电脑消磁器!可以帮你消除
十分好用的电脑消磁器!可以帮你消除十分好用的电脑消磁器!可以帮你消除十分好用的电脑消磁器!可以帮你消除十分好用的电脑消磁器!可以帮你消除十分好用的电脑消磁器!可以帮你消除十分好用的电脑消磁器!可以帮你
站帮网discuz X3.2 站帮网威黑模板
【站帮网 Discuz! X3.2 威黑模板】是一款专为Discuz! X3.2论坛系统设计的界面主题,旨在提供一种专业、时尚且具有高用户体验度的论坛界面。Discuz!


Java SE
