华为OD机试 2024C卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
小明在玩一个游戏,游戏规则如下:在游戏开始前,小明站在坐标轴原点处(坐标值为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
2、输出
0
3、说明
总共 2 个指令,幸运数为 1 ,依照指令行进,依次如下游戏开始前,站在坐标轴原点,此时坐标值为 0;
指令为 −5 ,后退5 步 ,此时坐标值为−5 ;
指令为 1,正好等于幸运数,前进 1+1=2步,此时坐标值为 −3;
整个游戏过程中,小明所处的坐标值依次为[0,−5,−3],最大坐标值为 0。
四、解题思路
1、输入读取与基本验证:
- 首先读取指令的总数 n,验证其是否在合法范围 (1 ≤ n ≤ 100)。如果不在此范围,输出 “12345” 并结束程序。
- 然后读取幸运数 m,并验证其是否在合法范围 (−100 ≤ m ≤ 100)。如果不合法,同样输出 “12345” 并结束程序。
2、初始化坐标和最大坐标:
- 初始化小明当前的坐标 pos 为 0。
- 初始化游戏过程中小明所达到的最大坐标 maxPos 为 0。
3、处理每个指令:
- 遍历读取每个指令 num 并验证指令是否在合法范围内 (−100 ≤ num ≤ 100)。若不合法,输出 “12345” 并结束程序。
- 根据指令更新小明的当前坐标。如果指令等于幸运数,且指令非零,根据指令的正负增减 1。
- 更新小明所达到的最大坐标 maxPos。
4、输出结果:
输出小明在游戏过程中达到的最大坐标值 maxPos。
五、Java算法源码
public class OdTest02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 读取指令的总数
if (n < 1 || n > 100) {
System.out.println("12345");
return;
}
int m = sc.nextInt(); // 读取幸运数
if (m < -100 || m > 100) {
System.out.println("12345");
return;
}
int idx = 0; // 小明的起始坐标
int max = 0; // 记录过程中的最大坐标
for (int i = 0; i < n; i++) {
int num = sc.nextInt(); // 读取每个指令
if (num < -100 || num > 100) {
System.out.println("12345");
return;
}
idx += num; // 更新小明的位置
if (num == m) { // 检查是否是幸运数,是的话根据正负调整
if (num > 0) {
idx += 1;
} else if (num < 0) {
idx -= 1;
}
}
max = Math.max(max, idx); // 更新最大坐标
}
System.out.println(max); // 输出最大坐标值
}
}
六、效果展示
1、输入
5
-5
-5 1 6 0 -7
2、输出
1
3、说明
总共 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。
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。