题意:
给你一个n*m的矩阵,求距离最近的C和H的位置,x,y尽量小。。。
暴力就过了。。
#include"stdio.h"
#include"string.h"
#include"algorithm"
#include"math.h"
using namespace std;
#define N 41
struct node
{
int x,y;
}C[N*N],H[N*N];
bool cmp(node a,node b)
{
if(a.x!=b.x)return a.x<b.x;
return a.y<b.y;
}
int abs(int a)
{
return a>0?a:-a;
}
int dis(node a,node b)
{
return abs(a.x-b.x)+abs(a.y-b.y);
}
int main()
{
int n,m;
int i,j;
char s[N][N];
while(scanf("%d%d",&n,&m),n||m)
{
getchar();
int a,b;
a=b=0;
for(i=0;i<n;i++)
{
gets(s[i]);
for(j=0;j<m;j++)
{
if(s[i][j]=='C')
{
C[a].x=i;
C[a].y=j;
a++;
}
else if(s[i][j]=='H')
{
H[b].x=i;
H[b].y=j;
b++;
}
}
}
sort(C,C+a,cmp);
sort(H,H+b,cmp);
int ans=10000000;
int x,y;
int xx,yy;
for(i=0;i<b;i++)
{
for(j=0;j<a;j++)
{
int t=dis(H[i],C[j]);
if(ans>t)
{
ans=t;
x=H[i].x;y=H[i].y;
xx=C[j].x;yy=C[j].y;
}
}
}
printf("%d %d %d %d\n",x,y,xx,yy);
}
return 0;
}