求助,可以得到2个关注
  • 板块P1331 海战
  • 楼主daijinxiang
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/8/24 12:27
  • 上次更新2024/8/24 15:03:57
查看原帖
求助,可以得到2个关注
1187511
daijinxiang楼主2024/8/24 12:27

本人虽然AC,但是过了一个月后,Wrong Answer。
TLE on 10
MY code:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int fx[5]={0,0,1,0,-1};
int fy[5]={0,1,0,-1,0};
int r,c,ans;
char a[1000][1000];
int vis[1000][1000];
bool pd() {
	for(int i=1; i<=r; i++) {
		for(int j=1; j<=c; j++) {
			int cnt=0;
			if(a[i][j]=='#') cnt++;
			if(a[i-1][j]=='#') cnt++;
			if(a[i-1][j+1]=='#') cnt++;
			if(a[i][j+1]=='#') cnt++;
			if(cnt==3) return false;
		}
	}
	return true;
}
void dfs(int sx,int sy) {
	for(int i=1; i<=4; i++) {
		int tx=fx[i]+sx;
		int ty=sy+fy[i];
		if(tx>=1&&tx<=r&&ty>=1&&ty<=c&&vis[tx][ty]==0&&a[tx][ty]=='#') {
			vis[tx][ty]=1;
			dfs(tx,ty);
		}
	}
}
signed main() {
	ios::sync_with_stdio(0);
	cin>>r>>c;
	for(int i=1; i<=r; i++)
		for(int j=1; j<=c; j++)
			cin>>a[i][j];
	if(!pd()) {
		cout<<"Bad placement."<<endl;
		return 0;
	}
	for(int i=1; i<=r; i++) {
		for(int j=1; j<=c; j++) {
			if(vis[i][j]==0&&a[i][j]=='#') {
				ans++;
				vis[i][j]=1;
				a[i][j]='.';
				dfs(i,j);
			}
		}
	}
	cout<<"There are "<<ans<<" ships.";
	return 0;
}
2024/8/24 12:27
加载中...