题目链接:https://ac.nowcoder.com/acm/contest/331/I
思路:直接模拟搜索即可。
#include<bits/stdc++.h>
using namespace std;
char mp[501][501];
int n,m;
int dir[4][2]={1,0,0,1,0,-1,-1,0};
int dfs(int x,int y)
{
int k = 0;
while(x < n && y < m && x >= 0 && y >= 0)
{
if(mp[x][y] == '\\')
{
if(k == 0) k = 1;
else if(k == 1) k = 0;
else if(k == 2) k = 3;
else k = 2;
}
if(mp[x][y] == '/')
{
if(k == 0) k = 2;
else if(k == 1) k = 3;
else if (k == 2) k = 0;
else k = 1;
}
x += dir[k][0];
y += dir[k][1];
}
if(x == n) return y+1;
return -1;
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> mp[i][j];
for(int i = 0; i < m; i++)
cout << dfs(0,i) << endl;
return 0;
}