javastudy-43:小孩报数问题

该博客介绍了一个Java程序,用于解决一个儿童报数游戏的问题。程序中,孩子们按圈编号并从指定位置开始报数,每报到特定数值的孩子出列。程序通过链表数据结构模拟此过程,直至所有孩子都出列。示例输入和输出展示了程序的正确运行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

43:小孩报数问题

描述

有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。

输入

第一行输入小孩的人数N(N<=64);接下来每行输入一个小孩的名字(人名不超过15个字符);最后一行输入asdasdasdasdW,S (W < N),用逗号”,”间隔;

输出

按人名输出小孩按顺序出列的顺序,每行输出一个人名

样例输入

5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3

样例输出

Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi

代码

import java.util.*;
import java.io.*;
import java.lang.*;
import java.math.*;
public class Main
{
	/*public static boolean check(int a, int b)
	{
		if((a>=0&&a<5)&&(b>=0&&b<5))
			return true;
		return false;
	}*/
	public static void main(String[] args)
	{
		LinkedList<String> l = new LinkedList<String>(); // 创建一个链表;
		Scanner cin = new Scanner(System.in);
		int n = cin.nextInt();
		cin.nextLine(); // 输入个数;
		for(int i = 1; i <= n; i++)
		{
			String s = cin.nextLine(); // 输入名字;
			l.add(s); // 添加到链表;
		}
		String ss = cin.next(); // 读取输入的 W 和 S;
		char[] s = ss.toCharArray(); // String 转 char;
		int tmp1 = s[0] - '0'; // char 转 int;
		int tmp2 = s[2] - '0' - 1;
		int pos = tmp1 - 1; // 链表从 0 开始, W - 1;
		while(l.size() != 0) // 开始报数,直到链表空;
		{
			pos += tmp2;  // 数学计算;
			pos %= l.size();
			System.out.println(l.get(pos)); // 输出名字;
			l.remove(pos); // 把已经输出的移出链表;
		}
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值