枚举。
又是一期检测题。又是只能做水题。唉。为毛老是选这种邀请赛的题。
枚举一下 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); } }
原文:http://blog.csdn.net/dongshimou/article/details/38016431