先找出最长b距离,再判断是否可以实现。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int INF=1<<30; 5 6 char mp[110][110]; 7 int maxx=0,maxy=0,minx=INF,miny=INF; 8 9 int main(){ 10 int n,m; 11 cin>>n>>m; 12 int ans=0,t=n*m; 13 for(int i=0;i<n;i++){ 14 for(int j=0;j<m;j++){ 15 cin>>mp[i][j]; 16 if(mp[i][j]=='B'){ 17 ans++; 18 maxx=max(i,maxx); 19 maxy=max(j,maxy); 20 minx=min(i,minx); 21 miny=min(j,miny); 22 } 23 } 24 } 25 if(ans==t){ 26 if(n==m) 27 cout<<0<<endl; 28 else 29 cout<<-1<<endl; 30 } 31 else if(ans==0){ 32 cout<<1<<endl; 33 } 34 else{ 35 int temp=maxx-minx+1; 36 int temp2=maxy-miny+1; 37 int cnt=max(temp,temp2); 38 // cout<<cnt<<endl; 39 int res=cnt*cnt-ans; 40 if(cnt<=min(n,m)) 41 cout<<res<<endl; 42 else 43 cout<<-1<<endl; 44 } 45 return 0; 46 }