1 条题解
-
0
#include<iostream> #include<queue> using namespace std; struct node{ int x,y; }; queue<node> q; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int n,m,cnt=0; char a[1005][1005]; void bfs(int x,int y){ a[x][y]='.'; q.push((node){x,y}); while(!q.empty()){ node h=q.front(); q.pop(); for(int i=0;i<4;i++){ int zx=h.x+dx[i],zy=h.y+dy[i]; if(zx>=1&&zx<=n&&zy>=1&&zy<=m&&a[zx][zy]=='#'){ a[zx][zy]='.'; q.push((node){zx,zy}); } } } } bool check(int i,int j){ int cnt=0; if(a[i][j]=='#') cnt++; if(a[i][j+1]=='#') cnt++; if(a[i+1][j]=='#') cnt++; if(a[i+1][j+1]=='#') cnt++; if(cnt==3) return false; return true; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<n;i++){ for(int j=1;j<m;j++){ if(!check(i,j)){ cout<<"Bad placement."; return 0; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='#'){ bfs(i,j); cnt++; } } } printf("There are %d ships.",cnt); return 0; }
- 1
信息
- ID
- 677
- 时间
- 800ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 9
- 已通过
- 2
- 上传者