9分求调急救
  • 板块P1331 海战
  • 楼主Konosekai
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/9/3 19:27
  • 上次更新2024/9/3 22:29:43
查看原帖
9分求调急救
1433392
Konosekai楼主2024/9/3 19:27
#include<iostream>
using namespace std;
int r,c,ans=0,s=0,o[1001][1001]={0};
char n[1001][1001];
bool pd(int x,int y);
int dfs(int x,int y);
int main(){
	cin>>r>>c;
	for(int i;i<r;i++){
		for(int j=0;j<c;j++)
			cin>>n[i][j];
	}
	ans=dfs(0,0);
	if(ans==0){
		cout<<"Bad placement."<<endl;
		return 0;
	}
	for(int i=0;i<r;i++){
		for(int j=0;j<c;j++){
			if(n[i][j]=='#'&&n[i][j+1]!='#'&&n[i+1][j]!='#')
				s++;
		}
	}
	cout<<"There are "<<s<<" ships."<<endl;
	return 0;
}
int dfs(int x,int y){
	if(pd(x,y))
		return 0;
	else{
		if(x>=0&&x<=r&&y>=0&&y<=c&&o[x][y]==0){
			o[x][y]=1;
			dfs(x+1,y);
			dfs(x,y+1);
			o[x][y]=0;
		}
	}
}
bool pd(int x,int y){
	int sum=0;
	if(n[x][y]=='#')
		sum++;
	if(n[x+1][y]=='#')
		sum++;
	if(n[x][y+1]=='#')
		sum++;
	if(n[x+1][y+1]=='#')
		sum++;
	if(sum==3)
		return true;
	return false;
}
2024/9/3 19:27
加载中...