为什么死循环(该对必关)
  • 板块P1331 海战
  • 楼主Jokersheng
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/12/8 12:08
  • 上次更新2024/12/8 15:24:19
查看原帖
为什么死循环(该对必关)
1243618
Jokersheng楼主2024/12/8 12:08
#include <bits/stdc++.h>
using namespace std;

int n,m,a[1005][1005],ans,dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};

char s[1005][1005];

bool vis[1005][1005];

void dfs(int x,int y){
	a[x][y]=ans;
	for(int i=0;i<4;i++){
		if(a[x+dx[i]][y+dy[i]]==0&&!vis[x+dx[i]][y+dy[i]]){
			vis[x+dx[i]][y+dy[i]]=1;
			dfs(x+dx[i],y+dy[i]);
			vis[x+dx[i]][y+dy[i]]=0;
		}
	}
	return;
} 

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>s[i][j];
			if(s[i][j]=='.'){
				a[i][j]=-1;
			}else{
				a[i][j]=0;
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]==0){
				ans++;
				dfs(i,j);
			}
		}
	}
	printf("There are %d ships.",ans);
	return 0;
}
2024/12/8 12:08
加载中...