早教吧作业答案频道 -->其他-->
求java高手编程设有n个人站成一排,每一个人有一编号i(1≤i≤n),从左向右“1、2、1、2、...”报数,数到1的人出列,数到2的人立即站到队伍的最右端。报数过程反复进行,直到n个人都出
题目详情
求java高手编程
设有n个人站成一排,每一个人有一编号i(1≤i≤n),从左向右“1、2、1、2、...”报数,数到1的人出列,数到2的人立即站到队伍的最右端。报数过程反复进行,直到n个人都出列为止。已知n个人的原来的顺序,请写出他们的出列顺序。
帮帮忙~
设有n个人站成一排,每一个人有一编号i(1≤i≤n),从左向右“1、2、1、2、...”报数,数到1的人出列,数到2的人立即站到队伍的最右端。报数过程反复进行,直到n个人都出列为止。已知n个人的原来的顺序,请写出他们的出列顺序。
帮帮忙~
▼优质解答
答案和解析
import java.util.Scanner;
import java.util.LinkedList;
public class Test
{
public static void getPerson(int number){
LinkedList list=new LinkedList();
for(int i=1;i<=number;i++){
list.add(i);
}
while(list.size()!=0){
System.out.print(list.element()+" ");//输出第一个元素,其实就是报数为1的人
if(list.size()==1) break;//如果链表大小为1,退出循环,如果为1了,接下来就不能执行下面的两个删除了
list.removeFirst();//出列了,把它删除
list.addLast(list.element());//删除了第一个,报数为2的人变为列表第一个,加入到列表最后,实际上也就是移到最后了
list.removeFirst();//已经把它加到最后了,这里删除它
}
}
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("输入人数:");
int num=in.nextInt();
System.out.println("出列顺序:");
getPerson(num);
}
}
import java.util.LinkedList;
public class Test
{
public static void getPerson(int number){
LinkedList
for(int i=1;i<=number;i++){
list.add(i);
}
while(list.size()!=0){
System.out.print(list.element()+" ");//输出第一个元素,其实就是报数为1的人
if(list.size()==1) break;//如果链表大小为1,退出循环,如果为1了,接下来就不能执行下面的两个删除了
list.removeFirst();//出列了,把它删除
list.addLast(list.element());//删除了第一个,报数为2的人变为列表第一个,加入到列表最后,实际上也就是移到最后了
list.removeFirst();//已经把它加到最后了,这里删除它
}
}
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("输入人数:");
int num=in.nextInt();
System.out.println("出列顺序:");
getPerson(num);
}
}
看了 求java高手编程设有n个人...的网友还看了以下:
1、整数1用了1个数字,整数20用了2和0两个数字,那么,从1至1000一共用个数字1.2、从1开 2020-05-13 …
一个扬州固定号码八位数,左起第二位上的数比左起第一位上的数小1,左起第三位的数是最大的一位数,左起 2020-05-22 …
六一班有男生30人,女生24人.(问题在补充栏中,10分钟左右交题,)1.女生人数是男生人数的() 2020-06-06 …
1.一个六位数左端的数字是1,如果把左端的数字1移到右端,那么所得的新六位数是原来的三倍,求原来的 2020-06-26 …
函数左右导数的问题..f(x)={当x≤1,(2/3)x^3.当x>1,x^2}为什么说f(z)在x 2020-11-01 …
一个6位数,左端的数(十万位数)是1,如果把左端的数1移到右端(作为个位数).那么可的新得6位数一个 2020-11-03 …
1:一个6位数,左端的数{十万位数}是一,如果把左端的数一移到右端{作为个位数}.那么可得新的6位数 2020-11-03 …
有500人站成一排,从左至右从1开始报数,第一次报双数的人留下,其余的人退出.留下的人再从左至右从l 2020-11-17 …
五一班全体同学左眼视力调查情况1)根据上面的数据完成下面的统计表.4.5有2人4.6有2人4.7有3 2020-11-17 …
列式计算(1)左12右倒数右左9是多w?(2)左左口减左个左口,再加多127,和是多w?(w)一个数 2020-12-14 …