@一只姜 大佬,谁来帮帮我呀!
2024-07-28 16:08:04
发布于:浙江
全部评论 2
缩进有点怪
2024-08-01 来自 浙江
0#include<bits/stdc++.h>
using namespace std;
int r,c;//行数列数
char mp[1009][1009];//地图
int dir[4][2]={0,-1,-1,0,1,0,0,1};//方向数组void dfs(int x,int y){//深度优先搜索(dfs)
mp[x][y]='';//将mp[x][y]标记为,不能再次访问(标记)
for(int i=0;i<4;i++){//循环四次,遍历上下左右四个方向
//下一次走的位置
int fx=dir[i][0]+x;
int fy=dir[i][1]+y;
if(fx>0 && fx<=r && fy>0 && fy<=c && mp[fx][fy]=='#'){
//判断有没有越界和能不能走
dfs(fx,fy);//搜索下一个位置
}
}
}bool d(int i,int j){//判断合不合法
int c=0;
if(mp[i][j]'#')c++;
if(mp[i+1][j]'#')c++;
if(mp[i][j+1]'#')c++;
if(mp[i+1][j+1]'#')c++;
if(c==3)return 0;
return 1;
}int main(){
cin>>r>>c;
int i,j;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
cin>>mp[i][j];
}
}
int s=0;//船数
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
if(i<r && j<c && d(i,j)0){
cout<<"Bad placement.";
return 0;
}
}
}
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
if(mp[i][j]'#'){
s++;
dfs(i,j);
}
}
}
cout<<"There are "<<s<<" ships.";
return 0;
}
(哪里不对吱一声)2024-08-01 来自 浙江
0
有帮助,赞一个