题目描述:
小明在玩一个游戏,游戏规则如下:
在游戏开始前,小明站在坐标轴原点处(坐标值为0)。
给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指定的要求前进或者后退指定的步数。前进代表朝坐标轴的正方向走,后退代表朝坐标轴的负方向走。
幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数加1。
例如:
幸运数为3,指令为[2,3,0,-5]
指令为2,表示前进2步;
指令为3,正好和幸运数相等,前进3+1=4步;
指令为0,表示原地不动,既不前进,也不后退。
指令为-5,表示后退5步;
请你计算小明在整个游戏过程中,小明所处的最大坐标值。
输入描述:
第一行输入1个数字,代表指令的总个数n(1<=n<=100)。
第二行输入1个数字,代表幸运数m(-100<=m<=100)
第三行输入n个指令,每个指令值的取值范围为:-100<=指令值<=100。
输出描述:
输出在整个游戏过程中,小明所处的最大坐标值。异常情况下输出:12345
示例1
输入:
2 1 -5 1
输出:
0
说明:
总共2个指令,幸运数为1,依照指令行进,依次如下:
游戏开始前,站在坐标轴原点,此时坐标值为0;
指令为-5,后退5步,此时坐标值为-5;
指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;
整个游戏过程中,小明所处的坐标值依次为[0,-5,-3],最大坐标值为0。
示例2
输入:
5 -5 -5 1 6 0 -7
输出:
1
说明:
总共5个指令,幸运数为-5,依照指令行进,依次如下:
游戏开始前,站在坐标轴原点,此时坐标值为0;
指令为-5,正好等于幸运数,后退5+1=6步,此时坐标值为-6;
指令为1,前进1步,此时坐标值为-5;
指令为6,前进6步,此时坐标值为1;
指令为0,既不前进,也不后退,此时坐标值为1;
指令为-7,后退7步,此时坐标值为-6;
整个游戏过程中,小明所处的坐标值依次为[0,-6,-5,1,1,-6],最大坐标值为1。
代码
public class Main {
public static void main(String[] args) {
try{
Scanner in = new Scanner(System.in);
int n = in.nextInt();//指令数
int m = in.nextInt();//幸运数
int[] arr = new int[n];//指令
//每进行一次指令记录坐标
List<Integer> list = new ArrayList<Integer>();
list.add(0);//开始坐标
int wz=0;
for (int i = 0; i < n; i++) {
int temp = in.nextInt();
wz+=temp;
//幸运数与指令相等时
//正数+1,负数-1
if (temp == m) {
if(temp>0){
wz+=1;
}else {
wz-=1;
}
}
list.add(wz);
}
//将位置进行排序
Collections.sort(list);
//最后一个即为最大位置
System.out.println(list.get(list.size()-1));
}catch(Exception e){//异常情况
System.out.println(12345);
}
}
}