1069 微博转发抽奖 (20 分)(java语言)

小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。
输入格式:

输入第一行给出三个正整数 M(≤ 1000)、N 和 S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从 1 开始)。随后 M 行,顺序给出转发微博的网友的昵称(不超过 20 个字符、不包含空格回车的非空字符串)。
注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。
输出格式:

按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出 Keep going…。
输入样例 1:

9 3 2
Imgonnawin!
PickMe
PickMeMeMeee
LookHere
Imgonnawin!
TryAgainAgain
TryAgainAgain
Imgonnawin!
TryAgainAgain
输出样例 1:

PickMe
Imgonnawin!
TryAgainAgain
输入样例 2:

2 3 5
Imgonnawin!
PickMe
输出样例 2:

Keep going…
思路:
用两个字符串数组,一个保存读入的,一个保存获奖的名字(用于后面判断这个名字是否出现过)
一个count 用来记录间隔,注意输出是从第一个序号开始的,所以只对第一个序号后面的下表进行判断,另外一个COUNT用来记录中奖的人数

package Main;
import java.util.*;
public class Main {
	public static void main(String[] args)
	{
		Scanner in=new Scanner(System.in);
		int i,j;
		int M,N,S;//总数,间隔,第一个的序号
		M=in.nextInt();
		N=in.nextInt();
		S=in.nextInt();
		int count=0,COUNT=0;
		String name[]=new String[1000];
		String huojiang[]=new String[1000];//保存获奖的人
		//输入
		for(i=0;i<M;i++)
		{
			name[i]=in.next();
		}
		//判断获奖的过程,第一个序号之前的不判断,注意下表要+1,因为我们是从1 2 3数的,对应数组就是0 1 2
		for(i=0;i<M;i++)
		{
			if(i+1==S)//到第一个序号
			{
				System.out.println(name[i]);
				huojiang[COUNT++]=name[i];//总次数+1//保存这个名字
			}
			else if(i+1>S) //只有大于等于第一个序号后面的才可以输出
			{	
				int flag=0;//标志这个是否在获奖名单里面
				for(j=0;j<COUNT;j++)
				{
					if(huojiang[j].equals(name[i]))//发现相同
					{
						flag=1;
						break;
					}
				}
				if(flag==0) //没有中过奖
				{
					count++;
					if(count==N)//到达间隔
					{
						System.out.println(name[i]);
						count=0;//赋0,重新计数,当计数到N的时候才输出,这个count是方便查询间隔
						huojiang[COUNT++]=name[i];//总次数+1//保存
					}
				}
			}
		}
		if(COUNT==0)//没有人获奖
			System.out.print("Keep going...");
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值