题意:自己看。
思路:看懂题你就会了,就是爆搞。
本次最水的一题,水到家了。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; struct node { int x,y; } h[1600],c[1600]; int hnum,cnum,m,n; int hx,hy,cx,cy,l; char a[50]; int dis(int i,int j) { int xl=(h[i].x-c[j].x>0)?h[i].x-c[j].x:c[j].x-h[i].x; int yl=(h[i].y-c[j].y>0)?h[i].y-c[j].y:c[j].y-h[i].y; return xl+yl; } int main() { while(scanf("%d%d",&m,&n)) { if(m==0&&n==0)return 0; hnum=0; cnum=0; for(int i=0; i<m; i++) { scanf("%s",a); for(int j=0; j<n; j++) { if(a[j]=='H') { h[hnum].x=i; h[hnum].y=j; hnum++; } else if(a[j]=='C') { c[cnum].x=i; c[cnum].y=j; cnum++; } } } cx=cy=hx=hy=50; l=1000000; for(int i=0; i<hnum; i++) { for(int j=0; j<cnum; j++) { int d=dis(i,j); if(dis(i,j)<l) { l=d; hx=h[i].x; hy=h[i].y; cx=c[j].x; cy=c[j].y; } else if(d==l) { if(hx>h[i].x) { l=d; hx=h[i].x; hy=h[i].y; cx=c[j].x; cy=c[j].y; } else if(hx==h[i].x) { if(hy>h[i].y) { l=d; hx=h[i].x; hy=h[i].y; cx=c[j].x; cy=c[j].y; } else if(hy==h[i].y) { if(c[j].x<cx) { l=d; hx=h[i].x; hy=h[i].y; cx=c[j].x; cy=c[j].y; } else if(cx==c[j].x) { if(cy>c[j].y) { l=d; hx=h[i].x; hy=h[i].y; cx=c[j].x; cy=c[j].y; } } } } } } } cout<<hx<<" "<<hy<<" "<<cx<<" "<<cy<<endl; } return 0; }