1 条题解
-
1
#include<bits/stdc++.h>
#define ll long long
#define un unsigned
#define int long long
#define db double
#define st string
#define ct const
#define xh(a,b,c) for(int a=b;a<=c;a++)
#define wx while(1)
#define dn(a,b,c) for(int a=b;a>=c;a--)
#define hfans[1]=INT_MAX,ans[2]=INT_MIN,ans[3]=INT_MAX,ans[4]=INT_MIN
using namespace std; ll n,m; char a[1010][1010]; int ans[5]; int sum; int tx[]={0,0,-1,1}; int ty[]={1,-1,0,0}; bool f[1010][1010]; void dfs(int x,int y){ f[x][y]=1; ans[1]=min(ans[1],x); ans[2]=max(ans[2],x); ans[3]=min(ans[3],y); ans[4]=max(ans[4],y); xh(i,0,3){ int X=x+tx[i],Y=y+ty[i]; if(a[X][Y]'#'&&!f[X][Y])dfs(X,Y); } } signed main(){ cin>>n>>m; xh(i,1,n)xh(j,1,m)cin>>a[i][j]; xh(i,1,n)xh(j,1,m)if(a[i][j]'#'&&!f[i][j]){ sum++; hf; dfs(i,j); xh(i1,ans[1],ans[2])xh(j1,ans[3],ans[4])if(a[i1][j1]!='#'){ printf("Bad placement."); return 0; } } printf("There are %d ships.",sum); return 0; }
- 1
信息
- ID
- 205
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 106
- 已通过
- 54
- 上传者