改进代码:#includebitsstdc++husing namespace std;char a101101;int nmxxyyllflag=1;int f1找第二个建筑 forint i=1;i=n;i++ forint j=1;j=m;j++ ifaij==continue; int l1=0l2=0; whileai+l1j!=&&i+l1=nl1++; while
#include<bits/stdc++.h> using namespace std; char a[101][101]; int n,m,xx,yy,ll,flag=1;
int findSecondBuilding(){//找第二个建筑 for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='.')continue; int l1=0,l2=0; while(a[i+l1][j]!='.'&&i+l1<=n)l1++; while(a[i][j+l2]!='.'&&j+l2<=m)l2++; cout<<i<<" "<<j<<" "<<min(l1,l2)<<endl; xx=i;yy=j;ll=min(l1,l2); return 0; } } }
int findFirstBuilding(){//找第一个建筑 for(int i=n;i;i--){ for(int j=m;j;j--){ if(a[i][j]=='.')continue; int l1=0,l2=0; while(a[i-l1][j]!='.'&&i-l1!=0)l1++; while(a[i][j-l2]!='.'&&j-l2!=0)l2++; flag=0; cout<<i-max(l1,l2)+1<<" "<<j-max(l1,l2)+1<<" "<<max(l1,l2); return 0; } } }
int main(){ cin>>n>>m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j]; findSecondBuilding(); for(int i=0;i<ll;i++){//把第一个建筑的所在区域变为空地 for(int j=0;j<ll;j++){ a[xx+i][yy+j]='.'; } } findFirstBuilding(); if(flag){//其中一个建筑包含了另一个建筑 cout<<xx<<" "<<yy<<" "<<ll<<endl; } return 0; }
原文地址: http://www.cveoy.top/t/topic/i7rw 著作权归作者所有。请勿转载和采集!