HELP!!!
查看原帖
HELP!!!
742157
ZYK_luogu楼主2023/3/25 11:26

// 只能过样例一。。。。。

#include<iostream>
#include<cstring>
using namespace std;
#define maxn 105

int n;
int sign[8][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};
char ch[maxn][maxn];
string str = " yizhong";
int len_str;

void sol(int x, int y, int k) {
	if(x > n || y > n || k >= len_str || x < 1 || y < 1) return;
	else {
		if(ch[x][y] == str[k]) {
			for(int i = 0; i < 8; i ++) {
				if(ch[x + sign[i][0]][y + sign[i][1]] == str[k + 1])
					sol(x + sign[i][0], y + sign[i][1], k + 1);
				if(ch[x + sign[i][0]][y + sign[i][1]] == str[k - 1])
					sol(x + sign[i][0], y + sign[i][1], k - 1);
			}
		}else{
			ch[x][y] = '*';
			for(int i = 0; i < 8; i ++) {
				if(ch[x + sign[i][0]][y + sign[i][1]] != '*')
					sol(x + sign[i][0], y + sign[i][1], k);
			}
		}
	}
}

int main() {
	len_str = str.length();
	cin >> n;
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= n; j ++)
			cin >> ch[i][j];
	sol(1, 1, 1);
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= n; j ++)
			cout << ch[i][j];
		cout << endl;
	}	
	return 0;
}

2023/3/25 11:26
加载中...