用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。 将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。 将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。 在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 "V" 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。 返回一个大小为 n 的数组 answer ,其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标,如果球卡在盒子里,则返回 -1 。C++实现
时间: 2023-02-20 21:51:22 浏览: 139
这是一道需要使用模拟和搜索的题目,题目要求我们在二维网格中模拟球从顶部下落的过程,并返回最终从底部掉出的球的位置。对于每一列的顶部,都放一颗球,我们需要通过遍历每一个单元格来确定球的最终位置,如果球被卡住或者掉出了底部,我们就可以得到答案。最终答案是一个大小为n的数组,每个数字代表一个球从顶部下落后的位置。如果球被卡住了,那么对应的数字是-1。
相关问题
如何定义一个二维的vector,大小为n x n,每个元素都是int类型并输出
你可以使用以下代码定义一个大小为n x n的二维vector,并输出其中的每个元素:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n = 5;
vector<vector<int>> vec(n, vector<int>(n, 0)); // 定义大小为n x n的二维vector,每个元素初始化为0
// 输出二维vector中的每个元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << vec[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
上述代码中,我们使用了vector容器嵌套的方式来定义一个二维vector,其中vec[i][j]表示第i行第j列的元素。在输出二维vector中的每个元素时,我们使用了两层for循环对每个元素进行遍历。
python中如何定义一个n*n大小的二维数组并初始化二维数组的和为0
在Python中,你可以使用列表嵌套的方式定义一个n * n大小的二维数组,并将其初始化为和为0。下面是一个示例代码:
```python
n = 3 # n代表数组的维度大小
# 定义二维数组并初始化为0
array = [[0 for _ in range(n)] for _ in range(n)]
# 打印初始的二维数组
for row in array:
print(row)
# 计算二维数组的和并输出
array_sum = sum(sum(row) for row in array)
print("二维数组的和为:", array_sum)
```
上述代码中,我们首先定义了变量n,它表示二维数组的维度大小。然后,我们使用列表推导式创建了一个n * n的二维数组,并将每个元素初始化为0。接下来,我们遍历二维数组并打印出初始的二维数组。最后,我们使用两次sum函数来计算二维数组的和,并将结果输出。
你可以根据需要修改n的值来定义不同大小的二维数组。