题解
2024-01-13 17:06:36
发布于:浙江
51阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,m,t,ans;
int dxy[][2]={-1,0,1,0,0,-1,0,1};
int sx,sy,ex,ey;
char a[105][105];
void dfs(int x,int y,int c){
if(c>t){
return ;
}
if(x==ex&&y==ey&&c==t){
ans++;
return ;
}//方案数
if(abs(ex-x)+abs(ey-y)+c>t){
return ;
} //位置判断,是否有必要继续走
for(int i=0;i<4;i++){
int xx=x+dxy[i][0];
int yy=y+dxy[i][1];
if(xx<=n&&yy<=m&&xx>0&&yy>0&&a[xx][yy]=='.'){//是否可走
dfs(xx,yy,c+1);
}
}//移动
}
int main(){
cin>>n>>m>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}//输入位置
cin>>sx>>sy>>ex>>ey;//起点,终点
if(a[sx][sy]=='*'){
cout<<0;
return 0;
}
dfs(sx,sy,0);
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个