社区讨论
CE的蒻求助
P1331海战参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo8gbnqm
- 此快照首次捕获于
- 2023/10/27 18:09 2 年前
- 此快照最后确认于
- 2023/10/27 18:09 2 年前
C
#include<bits/stdc++.h>
using namespace std;
int x,y,n,i,j;
char map[1145][4514];
void boat(char a[1145][4514],int i,int j){
if(a[i][j+1]=='#'){
a[i][j]='!';
j++;
boat(a[1145][4514],i,j);
}
else if(a[i][j-1]=='#'){
a[i][j]='!';
j--;
boat(a[1145][4514],i,j);
}
else if(a[i+1][j]=='#'){
a[i][j]='!';
i++;
boat(a[1145][4514],i,j);
}
else if(a[i-1][j]=='#'){
a[i][j]='!';
i--;
boat(a[1145][4514],i,j);
}
else{
a[i][j]='!';
n++;
return;
}
}
int main(){
//输入
scanf("%d%d",&x,&y);
for(i=1;i<=y;i++){
for(j=1;j<=x;j++){
cin >> map[i][j];
}
}
//判断合法
for(i=1;i<y;i++)
for(j=1;j<x;j++){
if(map[i][j]=='#'&&map[i][++j]=='#'&&map[++i][j]=='#'&&map[++i][++j]=='.'){
printf("Bad placement.");
return 0;
}
if(map[i][j]=='#'&&map[i][++j]=='#'&&map[++i][j]=='.'&&map[++i][++j]=='#'){
printf("Bad placement.");
return 0;
}
if(map[i][j]=='#'&&map[i][++j]=='.'&&map[++i][j]=='#'&&map[++i][++j]=='#'){
printf("Bad placement.");
return 0;
}
if(map[i][j]=='.'&&map[i][++j]=='#'&&map[++i][j]=='#'&&map[++i][++j]=='#'){
printf("Bad placement.");
return 0;
}
}
int k,d;
for(i=1;i<y;i++)
for(j=1;j<x;j++){
k=i;
d=j;
if (a[i][j]=='#') boat(a[1145][4514],i,j);
i=k;
j=d;
}
printf("There are %d ships.",n);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...