代码:
#include<bits/stdc++.h>
using namespace std;
char a[1010][1010];
int vi[1010][1010],h[1010][1010];
int n,m,ans=0,dx[5]={0,-1,1,0,0},dy[5]={0,0,0,1,-1};
char read()
{ char ch;
while (ch=getchar() )
if (ch!=' ' && ch!='\n') return ch;
}
int change(char a)
{
if (a=='u') return 1;
if (a=='d') return 2;
if (a=='r') return 3;
if (a=='l') return 4;
}
int ss(int x,int y)
{ if (vi[x][y]==1) return h[x][y];
if (x<1 || y<1 || x>n || y>m) return 0;
vi[x][y]=1;
if (a[x][y]=='o')
{
h[x][y]=1;
return 1;
}
int k=change(a[x][y]);
h[x][y]=ss(x+dx[k],y+dy[k]);
return ss(x+dx[k],y+dy[k]);
}
int main(){
freopen("4.in","r",stdin);
memset(vi,0,sizeof(vi));
memset(h,0,sizeof(h));
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>a[i][j];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
if (ss(i,j)==1) ans++;
}
cout<<ans<<endl;
return 0;
}
by 帅气yuyue @ 2018-02-06 21:54:36
```cpp
#include<bits/stdc++.h>
using namespace std;
char a[1010][1010];
int vi[1010][1010],h[1010][1010];
int n,m,ans=0,dx[5]={0,-1,1,0,0},dy[5]={0,0,0,1,-1};
char read()
{ char ch;
while (ch=getchar() )
if (ch!=' ' && ch!='\n') return ch;
}
int change(char a)
{
if (a=='u') return 1;
if (a=='d') return 2;
if (a=='r') return 3;
if (a=='l') return 4;
}
int ss(int x,int y)
{ if (vi[x][y]==1) return h[x][y];
if (x<1 || y<1 || x>n || y>m) return 0;
vi[x][y]=1;
if (a[x][y]=='o')
{
h[x][y]=1;
return 1;
}
int k=change(a[x][y]);
h[x][y]=ss(x+dx[k],y+dy[k]);
return ss(x+dx[k],y+dy[k]);
}
int main(){
freopen("4.in","r",stdin);
memset(vi,0,sizeof(vi));
memset(h,0,sizeof(h));
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>a[i][j];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
if (ss(i,j)==1) ans++;
}
cout<<ans<<endl;
return 0;
}
```
by 帅气yuyue @ 2018-02-06 21:55:46
您的freopen..
by Captain_Paul @ 2018-02-06 21:59:29
又一个被freopen带坏的孩子。。。替你可怜
by 固执 @ 2018-02-06 22:16:11