本文主要是介绍Java、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。
本程序使用链表类,原因:链表的插入、删除操作方便,效率高。
算法:
* 1、使用链表类
* 2、使用循环,循环条件为链表大小大于1,等于1时即为最后一位
* 3、移除前两个元素到链表末尾
* 4、删除第三个元素
package pack2;import java.util.LinkedList;
import java.util.Scanner;public class Loop {public static void main(String[] args) {try (Scanner input = new Scanner(System.in);){System.out.print("Enter the amount of children: ");int amount = input.nextInt();process(amount);}}/*** 算法:* 1、使用链表类* 2、使用循环,循环条件为链表大小大于1,等于1时即为最后一位* 3、移除前两个元素到链表末尾* 4、删除第三个元素**/public static void process(int amount) {LinkedList<Integer> linkedList = new LinkedList<>(); //创建一个链表对象for (int i = 0; i < amount; i++) linkedList.addLast(i+1); //链表添加值while(linkedList.size() > 1) {linkedList.addLast(linkedList.removeFirst()); //移除的第一个元素添加到末尾linkedList.addLast(linkedList.removeFirst()); //移除的第二个元素添加到末尾linkedList.removeFirst(); //移除第三个元素}System.out.println("The number of the last one is: "+linkedList.removeFirst());}}
这篇关于Java、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!