萌新求助,样例都对了,但是 WA 惹
查看原帖
萌新求助,样例都对了,但是 WA 惹
322108
可爱楼主2020/6/14 20:58

为什么我每次做 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

2020/6/14 20:58
加载中...