【三月】第二次课堂练习
作者:互联网
P1331
#include<bits/stdc++.h> using namespace std; char ch[1001][1001]; int n,m,s; int dx[5]={0,1,-1,0,0}; int dy[5]={0,0,0,1,-1}; int maxx,minx,maxy,miny; inline void dfs(int x,int y) { int sx,sy; if(x>maxx) maxx=x; else if(x<minx) minx=x; if(y>maxy) maxy=y; else if(y<miny) miny=y; for(int i=1;i<=4;i++) { sx=x+dx[i]; sy=y+dy[i]; if(ch[sx][sy]=='#') { ch[sx][sy]='.'; s++; dfs(sx,sy); } } } int main() { int ans=0; scanf("%d %d",&n,&m); char str[1001]; for(int i=1;i<=n;i++){ scanf("%s",str); for(int j=1;j<=m;j++) ch[i][j] = str[j-1]; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(ch[i][j]=='#') { ch[i][j]='.'; maxx=i;minx=i; maxy=j;miny=j; s=1; dfs(i,j); if((maxx-minx+1)*(maxy-miny+1)==s) ans++; else { printf("Bad placement."); return 0; } } } } printf("There are %d ships.",ans); return 0; }
标签:maxx,maxy,课堂练习,int,else,三月,ch,第二次,1001 来源: https://www.cnblogs.com/orange-/p/16057987.html