题解P9908 【 [COCI 2023/2024 #2] Pahuljice】
xiangyanhao · · 题解
为了对雪花进行判断,我们需要找到给出的字符矩阵中的 + 字符,然后从这一位置开始向外扩展即可。扩展的方法如下:
对于每一个 + 字符的所在位置
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool pos_valid(int x,int y){ //判断坐标是否合法
return 1<=x&&x<=n&&1<=y&&y<=m;
}
char sn[55][55];
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin >> sn[i][j];
}
}
int ans = 0;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(sn[i][j]=='+'){
int x = 1;
while(pos_valid(i-x,j-x)&&pos_valid(i-x,j+x)&&pos_valid(i+x,j-x)&&pos_valid(i+x,j+x)&&
(sn[i][j-x]=='-'&&sn[i][j+x]=='-'&&sn[i-x][j]=='|'&&sn[i+x][j]=='|'&&sn[i-x][j-x]=='\\'&&sn[i+x][j+x]=='\\'&&sn[i+x][j-x]=='/'&&sn[i-x][j+x]=='/')){
x++;
}
x--; //最后一次x++之后是不能构成雪花的,因此要减去
ans = max(ans,x);
}
}
}
cout << ans;
}