[ABC311D] Grid Ice Floor
前言:题解看不懂,太高深了(我太蒻了),于是自己写了一篇。
思路:bfs 大法,记录新的单次滑倒的中点(撞石头),并记录经过的点,总之还是很简单的。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=210;
int n,m;
int vis[N][N],cnt[N][N];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
char mp[N][N];
struct State{int x,y;};
void bfs(){
vis[1][1]=1;
cnt[1][1]=1;
queue<State> st;
st.push({1,1});
while(!st.empty()){
for(int i=0;i<4;i++){
int nx=st.front().x;
int ny=st.front().y;
while(mp[nx+dx[i]][ny+dy[i]]=='.'){
nx+=dx[i],ny+=dy[i];
cnt[nx][ny]=1;
}
if(vis[nx][ny]==0){
st.push({nx,ny});
vis[nx][ny]=1;
}
else continue;
}
st.pop();
}
return ;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++) cin>>mp[i][j];
}
bfs();
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(cnt[i][j]==1)ans++;
}
cout<<ans;
return 0;
}
尼堪尼玛
本文作者:Tobaa
本文链接:https://www.cnblogs.com/TobyL/p/18665272
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步