普及组CSP-J初赛程序阅读训练05
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
01 #include <bits/stdc++.h>
02 using namespace std;
03
04 int calc(vector<vector<int>> &grid)
05 {
06 int n = grid.size(), m = grid[0].size();
07 vector<int> dp(m);
08 dp[0] = (grid[0][0] == 0);
09 for(int i = 0; i < n; i++)
10 for(int j = 0; j < m; j++)
11 {
12 if(grid[i][j] == 1)
13 {
14 dp[j] = 0;
15 continue;
16 }
17 if(j - 1 >= 0 && grid[i][j - 1] == 0)
18 dp[j] += dp[j - 1];
19 }
20 return dp[m - 1];
21 }
22
23 int main()
24 {
25 int n, m;
26 cin >> n >> m;
27 vector<vector<int>> a(n, vector<int>(m));
28 for(int i = 0; i < n; i++)
29 for(int j = 0; j < m; j++)
30 cin >> a[i][j];
31 cout << calc(a) << endl;
32 return 0;
33 }
判断题
第 1 题
若输入 3 3 0 0 0 0 1 0 0 0 0,则输出为 2。
{{ select(1) }}
- 正确
- 错误
第 2 题
若 f[i][j] 表示从 (0,0) 走到 (i,j) 的路径数,则在第 10~19 行的循环中,f[i][j]=dp[j]。
{{ select(2) }}
- 正确
- 错误
第 3 题
(2 分)若将第 27 行的代码改为 vector<vector<int>> a(n+1, vector<int>(m+1)),则当输入的 n=3,m=3 时,calc 函数中的 n=3,m=3。
{{ select(3) }}
- 正确
- 错误
选择题
第 4 题
当输入的 a 数组为 {{0,0,1},{1,1,0},{0,1,0},{1,0,1},{0,0,0}} 时,程序的输出为( )。
{{ select(4) }}
- 0
- 1
- 2
- 3
第 5 题
若删除第 12~16 行的代码,则当输入的 a 数组为 {{0,0,0},{0,1,0},{0,0,0}} 时,程序的输出为( )。
{{ select(5) }}
- 1
- 2
- 3
- 4
第 6 题
(4 分)当输入的 a 数组为 {{0,0,2},{0,1,2},{5,3,4}} 时,程序的输出为( )。
{{ select(6) }}
- 0
- 1
- 2
- 3
