记录编号 |
110834 |
评测结果 |
AAAAAAAA |
题目名称 |
[暑假培训2012] 寻找国都名 |
最终得分 |
100 |
用户昵称 |
slyrabbit |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.009 s |
提交时间 |
2014-07-12 15:21:57 |
内存使用 |
0.34 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
class country
{
public:
string str;
int xans,yans;
int ans[101];
bool t;
void f()
{
t=0;
}
};
country sly[20];
int m,n,k;
char a[101][101];
bool b[101][101]={0};
int r1[9]={0,1,-1,0,0,-1,1,1,-1};
int r2[9]={0,0,0,1,-1,1,-1,1,-1};
void work(int x,int y,int j,int p)
{
b[x][y]=1;
if(j==sly[p].str.length())
{
sly[p].t=true;
return;
}
for(int i=1;i<=8;i++)
{
if((x+r2[i]>=1&&x+r2[i]<=m)&&(y+r1[i]>=1&&y+r1[i]<=n))
{
if(a[x+r2[i]][y+r1[i]]!=sly[p].str[j]||b[x+r2[i]][y+r1[i]]==1)
continue;
sly[p].ans[j-1]=i;
x=x+r2[i];
y=y+r1[i];
work(x,y,j+1,p);
b[x][y]=0;
x=x-r2[i];
y=y-r1[i];
if(sly[p].t)
break;
}
}
}
int main()
{
freopen("country.in","r",stdin);
freopen("country.out","w",stdout);
cin>>m>>n;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
cin>>k;
for(int i=0;i<k;i++)
{
cin>>sly[i].str;
}
for(int p=0;p<k;p++)
{
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==sly[p].str[0])
{
sly[p].xans=i;
sly[p].yans=j;
work(i,j,1,p);
memset(b,0,sizeof(b));
}
if(sly[p].t)
break;
}
if(sly[p].t)
break;
}
if(!sly[p].t)
cout<<"No found"<<endl;
else
{
cout<<"("<<sly[p].xans<<","<<sly[p].yans<<")";
for(int i=0;i<sly[p].str.length()-1;i++)
{
cout<<sly[p].ans[i];
}
cout<<endl;
}
}
return 0;
}