求助大佬,一直错第一点

P1331 海战

代码发崩了,再发一次 ```cpp #include<cstdio> int n,m,s; char a[1001][1001]; bool count(int x,int y) { int cc=1; if(a[x][y+1]=='#')cc++; if(a[x+1][y]=='#')cc++; if(a[x+1][y+1]=='#')cc++; if(cc==3)return false; return true; } void dfs(int x,int y){ a[x][y]='.'; if(a[x-1][y]=='#')dfs(x-1,y); if(a[x+1][y]=='#')dfs(x+1,y); if(a[x][y-1]=='#')dfs(x,y-1); if(a[x][y+1]=='#')dfs(x,y+1); } int main(){ scanf("%d%d\n",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++)scanf("%c",&a[i][j]); scanf("\n"); } for(int i=1;i<n;i++){ for(int j=1;j<m;j++){ if(a[i][j]=='#'&&!count(i,j)){ printf("Bad placement."); return 0; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='#'){ dfs(i,j); s++; } } } printf("There are %d ships.",s); } ``` ```cpp #include<cstdio> #include<queue> using namespace std; char a[1001][1001],aa[1001][1001]; int r,c,s,flag; queue<int>bf; int get() { int xx=bf.front(); bf.pop(); return xx; } bool count(int x,int y) { int cc=1; if(aa[x][y+1]=='#')cc++; if(aa[x+1][y]=='#')cc++; if(aa[x+1][y+1]=='#')cc++; if(cc==3)return false; return true; } void bfs(int y,int x) { if(flag==1)return; if(!count(x,y)) { flag=1; return; } if(a[x+1][y]=='#') { a[x+1][y]='.'; bf.push(x+1); bf.push(y); } if(a[x][y+1]=='#') { a[x][y+1]='.'; bf.push(x); bf.push(y+1); } if(a[x-1][y]=='#') { a[x-1][y]='.'; bf.push(x-1); bf.push(y); } if(a[x][y-1]=='#') { a[x][y-1]='.'; bf.push(x); bf.push(y-1); } if(bf.empty())return; bfs(get(),get()); } int main() { scanf("%d%d\n",&r,&c); for(int i=1; i<=r; i++) { for(int j=1; j<=c; j++) { scanf("%c",&a[i][j]); aa[i][j]=a[i][j]; } scanf("\n"); } for(int i=1; i<=r; i++) { for(int j=1; j<=c; j++) { if(flag==1) { printf("Bad placement."); return 0; } if(a[i][j]=='#') { bfs(j,i); s++; } } } printf("There are %d ships.",s); } ```
by TinyKiecoo @ 2018-11-03 17:42:45


wo ye shi
by luoxiao233 @ 2018-12-04 09:14:17


特判
by Memory_L_Exceeded @ 2021-10-16 19:46:40


|