power177 2019-03-05 10:56 采纳率: 0%
浏览 889

CCF2018-12-2 小明放学(java)解答错误求助

问题描述我引用一下别人的博客:https://blog.csdn.net/Q_M_X_D_D_/article/details/86617268

下面是我个人的思路:
1. 每个路口的灯的时间和状态只与消耗的总时间有关
2. 总时间取模后的值即能算出当前到达的路口的灯的状态以及时间

我自己用IDE写了之后反复检查都发现不出问题,在CCF练习的网站上面提交的话是解答错误。
下面贴我的代码:

import java.util.Scanner;
public class _12_2_B {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] lightTimes = sc.nextLine().split(" ");
        int r = Integer.parseInt(lightTimes[0]);
        int y = Integer.parseInt(lightTimes[1]);
        int g = Integer.parseInt(lightTimes[2]);
        int dataCounts = Integer.parseInt(sc.nextLine());

        int allTimes = 0;
        for(int i = 0;i<dataCounts;i++){
            String[] tmp = sc.nextLine().split(" ");
            int type = Integer.parseInt(tmp[0]);
            int typeTime = Integer.parseInt(tmp[1]);

            int moveTime = allTimes%(r+y+g); //计算一个周期后回到该位置后再移动的时间
            if(type==0){     //路口
                allTimes+=typeTime;
            }else if(type == 1){   //红灯
                if(moveTime<typeTime){   //比数字表上的数字小
                    allTimes+=typeTime-moveTime;
                }else if(moveTime>=typeTime+g){   //比数字表上的数字大,并且大过了数字表+绿灯时间直接来到下一周期黄灯
                    int needTime = y+r-(moveTime-r-g);
                    allTimes+=needTime;
                }
            }else if(type == 2){      //黄灯
                if(moveTime<typeTime+r){ //小于红灯+当前黄灯数字表的数
                    allTimes+=typeTime+r-moveTime;
                }else if(moveTime>=typeTime+r+g){      //大于红灯+黄灯数字表上的时间+下一周期的绿灯时间,来到下一周期黄灯
                    allTimes+=r+y-(moveTime-typeTime-r-g);
                }
            }else if(type == 3){  //绿灯
                if(moveTime>=typeTime && moveTime<r+y+typeTime){   //大于等于绿灯数字表的数字,并且小于同周期到红灯结束需要的时间
                    allTimes+=r+y-(moveTime-typeTime);
                }
            }
        }
        System.out.println(allTimes);  //输出结果
    }
}

希望有大神能帮帮我找出问题

  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2019-03-05 13:59
    关注

    你对比你的实现跟那篇博客中的代码的差异了吗?
    如果直接提交博客中的代码能正确通过吗?
    如果确定思路正确的话,可能是平台有问题,编程平台不一定有正确答案的。

    评论

报告相同问题?

悬赏问题

  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊