lyh20021209 2022-02-06 17:05 采纳率: 76.9%
浏览 23
已结题

一道PAT1069 微博转发抽奖 答案错误

img

img


代码如下:


import java.io.*;
import java.util.*;

public class Main {

    //判断某一ID是否中过奖的方法
    public static boolean hasIt(ArrayList<String> lucky,String ID){
        for(String data:lucky){
            if(data.equals(ID)) return true;
        }
        return false;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        //total 总转发量
        //start 启示位置
        //step 间隔(或者叫步长)
        String[] info=br.readLine().split(" ");
        int total=Integer.parseInt(info[0]),start=Integer.parseInt(info[1]),step=Integer.parseInt(info[2]);

        //中过奖的人
        ArrayList<String> lucky=new ArrayList<>();

        //转发的人不够抽奖
        if(total<start){
            out.println("Keep going...");
        }


        else{
            //遍历每一个ID
            for(int i=1;i<=total;i++){
                String ID=br.readLine();

                //如果当前ID到达了起始位置,打印ID并加入动态数组
                if(i==start){
                    out.println(ID);
                    lucky.add(ID);
                    continue;
                }

                //如果当前ID已经在起始位置后,并且踩在了间隔决定的抽奖位置上
                if((i-start)%step==0&&i>start){

                    //如果动态数组里没有这个ID,打印并加入
                    if(!hasIt(lucky,ID)){
                        out.println(ID);
                        lucky.add(ID);
                    }
                    //如果已经抽到过了,序号和总数都自减,以此跳过这个ID,并且不会导致无读入使得循环无法结束
                    else{
                        i--;
                        total--;
                    }

                }

            }

        }
        out.flush();
    }
}

测试点2 3错误 请问具体哪里有问题?

img

  • 写回答

1条回答 默认 最新

  • 载木成舟 2022-02-07 10:23
    关注

    很尴尬地通知您,第三个输入的数字才是起始位置,第二个才是间隔,你输入反了

    img

    ps: i--,total-- 倒是挺妙的,但为什么不直接使用System.outScanner啊。而且ArrayList也有contains方法判断是否有这个元素,不用自己写

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月6日

悬赏问题

  • ¥100 支付宝批量检测实名工具
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题