63分求救
  • 板块P1331 海战
  • 楼主xW_Wx
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/28 19:39
  • 上次更新2023/11/3 07:10:30
查看原帖
63分求救
681523
xW_Wx楼主2023/7/28 19:39

应该就是注释判断条件的问题,测试点还有RE


#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int n,m,s,q[100005][2],xx[4]={0,0,1,-1},yy[4]={1,-1,0,0};
void bfs(int cxk,int gg){
	int f=0,r=1;
	a[cxk][gg]='.';
	q[r][0]=cxk;
	q[r][1]=gg;
	while(f<r){
		f++;
		for(int i=0;i<4;i++){
			int x=q[f][0]+xx[i];
			int y=q[f][1]+yy[i];
			if(x>=1&&x<=n&&y<=m&&y>=1&&a[x][y]!='.'){
				a[x][y]='.';
				r++;
				q[r][0]=x;
				q[r][1]=y;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%1d",&a[i][j]);
			
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!='.'){
//				if((a[i][j+1]!='.'&&a[i][j-1]!='.')||(a[i][j+1]!='.'&&a[i-1][j]!='.')||(a[i][j+1]!='.'&&a[i+1][j]!='.')||(a[i][j-1]!='.'&&a[i-1][j]!='.')||(a[i][j-1]!='.'&&a[i+1][j]!='.')||(a[i+1][j]!='.'&&a[i-1][j]!='.')||(a[i][j+1]!='.'&&a[i][j-1]!='.'&&a[i-1][j]!='.'&&a[i+1][j]!='.')){
//					cout<<"Bad placement.";//应该就是注释判断条件的问题 
//					return 0;
//				}

					bfs(i,j);
					s++;
				
			}
		}
	}
	cout<<"There are "<<s<<" ships.";
	return 0;
} 






2023/7/28 19:39
加载中...