1 条题解
-
1
C++
这道题只要理解了就很容易可以知道
飞船只能向下和向右走,所以
每个点的路径数就是上面和左边点路径数之和
若有敌机,此点的路径就是0
只要用两张图,一张存敌机的位置,一张存每个点的路径数
接下来写两条for循环来算就行了
//Florance #include <bits/stdc++.h> using namespace std; #define int long long int a[110][110]; //存图 int b[110][110]; //存每个点的路径数 signed main() { int n, m; cin >> n >> m; for(int i = 1; i <= m; i++) { //读图,要注意的是给出的是x\*y的图 for(int j = 1; j <= n; j++) { //读入时应当按y\*x读入 cin >> a[i][j]; } } for(int i = 1; i <= m; i++) { //算路径 for(int j = 1; j <= n; j++) { if(i == 1 and j == 1) b[i][j] = 1; //起始点b[1][1]一定为1 else b[i][j] = b[i - 1][j] + b[i][j - 1]; if(a[i][j] == 1) { //如果此点有敌人,路径数为0 b[i][j] = 0; } } } // for(int i = 1; i <= m; i++) { //调试输出图b // for(int j = 1; j <= n; j++) { // cout << b[i][j] << ' '; // } // cout << '\\n'; // } if(b[m][n] == 0) cout << "NO!!!"; else cout << b[m][n]; //答案就是点b[n][m]的路径数 return 0; }
- 1
信息
- ID
- 854
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 19
- 已通过
- 7
- 上传者