为什么我每次做 CF 都是样例对了可是交上去就 WA 呢(
上次因为没开 long long
这次不是这个原因 qwq
/*
Problem:CF1182B
Date:14/06/20 12:02
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#define line cout << endl
#define int long long
using namespace std;
char map[205][205];
int h, w;
bool flag;
void up (int i, int j) {
map[i][j] = '.';
if (map[i - 1][j] == '*')
return up(i - 1, j);
}
void down (int i, int j) {
map[i][j] = '.';
if (map[i + 1][j] == '*')
return down(i + 1, j);
}
void left (int i, int j) {
map[i][j] = '.';
if (map[i][j - 1] == '*')
left(i, j - 1);
}
void right (int i, int j) {
map[i][j] = '.';
if (map[i][j + 1] == '*')
return right(i, j + 1);
}
void kill (int i, int j) {
map[i][j] = '.';
up (i - 1, j);
down (i + 1, j);
left (i, j - 1);
right (i, j + 1);
}
void test () {
for (int i = 1; i <= h; i++)
for (int j = 1; j <= w; j++)
if (map[i][j] == '*' &&
map[i - 1][j] == '*' &&
map[i][j - 1] == '*' &&
map[i + 1][j] == '*' &&
map[i][j + 1] == '*') {
kill (i, j);
flag = true;
}
for (int i = 1; i <= h; i++)
for (int j = 1; j <= w; j++)
if (map[i][j] == '*')
flag = false;
}
signed main () {
cin >> h >> w;
for(int i = 1; i <= h; i++)
for(int j = 1; j <= w; j++)
cin >> map[i][j];
test();
if(flag) puts("YES");
else puts("NO");
return 0;
}
萌新求助qwq