题解
2024-06-25 21:40:04
发布于:广东
6阅读
0回复
0点赞
模拟,谁拿深搜做我笑他两年半
#include <iostream>
#include <cstdio>
using namespace std;
long a[205][105][105];
char mp[105][105];
int dir[4][2] = {-1, 0, 0, -1, 0, 1, 1, 0};
int n, m, t, x1, y1, x2, y2;
bool check(int x, int y){
if(x < 1 || x > n || y < 1 || y > m) return 0;
if(mp[x][y] == '*') return 0;
return 1;
}
int main(){
cin >> n >> m >> t;
for(int i = 1; i <= n; i++){
scanf("%s", mp[i] + 1);
}cin >> x1 >> y1 >> x2 >> y2;
a[0][x1][y1] = 1;//还没开始有1种情况
for(int i = 1; i <= t; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= m; k++){
for(int l = 0; l < 4; l++){
int x = j + dir[l][0], y = k + dir[l][1];
if(check(x, y)){
a[i][x][y] = (a[i][x][y] + a[i - 1][j][k]) % 998244353;//能到达加情况
}
}
}
}
}cout << a[t][x2][y2];
return 0;
}
这里空空如也
有帮助,赞一个