枚举。
又是一期检测题。又是只能做水题。唉。为毛老是选这种邀请赛的题。
枚举一下 H 点 和 C 点就行了。
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<cmath>
#define INF 0x7fffffff
#define eps 1e-6
#define LL long long
using namespace std;
int n,m;
struct lx
{
int x,y;
};
lx C[41*41],H[41*41];
int main()
{
while(scanf("%d%d",&n,&m),n||m)
{
char str[41];
int ccot=0,hcot=0;
for(int i=0; i<n; i++)
{
scanf("%s",str);
for(int j=0; j<m; j++)
{
if(str[j]=='C')
{
C[ccot].x=i;
C[ccot++].y=j;
}
else if(str[j]=='H')
{
H[hcot].x=i;
H[hcot++].y=j;
}
}
}
int hx=0,hy=0,cx=0,cy=0;
int len=INF;
for(int i=0;i<hcot;i++)
{
for(int j=0;j<ccot;j++)
{
int tmp=abs(H[i].x-C[j].x)+abs(H[i].y-C[j].y);
if(tmp<len)
{
len=tmp;
hx=H[i].x,hy=H[i].y;
cx=C[j].x,cy=C[j].y;
}
}
}
printf("%d %d %d %d\n",hx,hy,cx,cy);
}
}