(C语言)华为OD机考:统一考试 C卷 + D卷 + B卷 +A卷
真题目录:【C语言题解版】华为 OD 机试 C卷抽中题库清单(全真题库)含考点说明
专栏:(C语言)最新华为OD机试C卷+D卷+AB卷
题目描述
给定一个包含 0 和 1 的二维矩阵,给定一个初始位置和速度,一个物体从给定的初始位置触发, 在给定的速度下进行移动, 遇到矩阵的边缘则发生镜面反射。
无论物体经过 0 还是 1, 都不影响其速度
请计算并给出经过 t 时间单位后, 物体经过 1 点的次数
矩阵以左上角位置为[0, 0](列(x), 行(行)), 例如下面A点坐标为[2, 1] (第二列, 第一行)
+--------------------------- 递增(x)
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
| 0 0 1 0 0 0 0 1 0 0 0 0
|
递增(y)
注意:
- 如果初始位置的点是 1, 也计算在内
- 时间的最小单位为1, 不考虑小于 1 个时间单位内经过的点
输入描述
第一行为初始信息
第二行开始一共 h 行,为二维矩阵信息
其中:
-
w,h 为矩阵的宽和高
-
x,y 为起始位置
-
sx,sy 为初始速度
-
t 为经过的时间
所有输入都是有效的,数据范围如下:
- 0 < w < 100
- 0 < h < 100
- 0 ≤ x < w
- 0 ≤ y < h
- -1 ≤ sx ≤ 1
- -1 ≤ sy ≤ 1
- 0 ≤ t <100
输出描述
经过 1 的个数
注意初始位置也要计算在内
用例
输入:
12 7 2 1 1 -1 13
001000010000
001000010000
001000010000
001000010000
001000010000
001000010000
001000010000
输出:
3
说明:
初始位置为(2, 1), 速度为(1, -1), 那么13个时间单位后, 经过点1的个数为3
解题思路
这段Java代码的主要目标是模拟一个物体在二维矩阵中的运动,并计算在给定的时间单位内&#x