不知为何只得了20 求助dalao
查看原帖
不知为何只得了20 求助dalao
260361
hanran_楼主2021/6/29 16:39


#include <iostream>

using namespace std;

string _word[101];
int _num = 0;
const string _still = "yizhong";
string _cup;
bool _flag[101][101] = {false};

void ParseIn () {

	cin >> _num;

	for (int i = 0; i < _num; i++) {
		cin >> _word[i];
	}

}

void question(int i,int j) {
	bool r = false;
	int l = 0;
	if (_num - j > 6) {//右
		for (int q = 0; q < 7; q++) {
			if (_word[i][j + q] == _still[q]) {
				l++;
			}

		}
		if (l == 7) {
			for (int q = 0; q < 7; q++) {
				_flag[i][j + q] = 1;
			}
		}
	}
	r = false;
	l = 0;
	if (j >= 6) {//左
		for (int q = 0; q < 7; q++) {
			if (_word[i][j - q] == _still[q]) {
				l++;
			}
			if (l == 7) {
				for (int q = 0; q < 7; q++) {
					_flag[i][j - q] = 1;
				}
			}
		}
	}
	r= false;
	l = 0;
	if (i >= 6) {//上
		for (int q = 0; q < 7; q++) {
			if (_word[i-q][j] == _still[q]) {
				l++;
			}
			if (l == 7) {
				for (int q = 0; q < 7; q++) {
					_flag[i-q][j] = 1;
				}
			}
		}

	}
	r = false;
	l = 0;

	if (_num - i > 6) { //下
		for (int q = 0; q < 7; q++) {
			if (_word[q+i][j] == _still[q]) {
				l++;
			}
			if (l == 7) {
				for (int q = 0; q < 7; q++) {
					_flag[q+i][j] = 1;
				}
			}
		}
	}

	r = false;
	l = 0;

	if (i >= 6) {//右上 
		if (_num - j > 6) {
			for (int q = 0; q < 7; q++) {
				if (_word[i - q][j + q] = _still[q]) {
					l++;
				}
			}
			if (l == 7) {
				for (int q = 0; q < 7; q++) {
					_flag[i - q][j + q] = 1;
				}
			}
		}
	}
	
	r = false;
	l = 0;
	
	if (_num - j > 6) { //右下 
		if (_num - i > 6) {
			for (int q = 0; q < 7; q++) {
				if (_word[q + i][j + q] == _still[q]) {
					l++;
				}
				if (l == 7) {
					for (int q = 0; q < 7; q++) {
						_flag[q+i][j+q] = 1;
					}
				}
			}
		}
	}
	
	r = false;
	l = 0;
	
	if (j >= 6) { //左上 
		if (i >= 6) {
			for (int q = 0; q < 7; q++) {
				if (_word[i - q][j - q] == _still[q]) {
					l++;
				}
				if (l == 7) {
					for (int q = 0; q < 7; q++) {
						_flag[i - q][j - q] = 1;
					}
				}
			}
		}
	}
	
	r = false;
	l = 0;
	
	if (j >= 6) { //左下 
		if (_num - i > 6) {
			for (int q = 0; q < 7; q++) {
				if (_word[i + q][j - q] == _still[q]) {
					l++;
				}
				if (l == 7) {
					for (int q = 0; q < 7; q++) {
						_flag[i + q][j - q] = 1;
					}
				}
			}
		}
	}
}

void Core () {

	for (int i = 0; i < _num; i++) {
		for (int j = 0; j < _num; j++) {
//			if (_flag[i][j] == false) {
			if (_word[i][j] == 'y') {
				question(i,j);
			}
//			}
		}
	}
	for (int i = 0; i < _num; i++) {
		for (int j = 0; j < _num; j++) {
			if (_flag[i][j] == false) {
				_word[i][j] = '*';
			}
		}
	}

}

void CWriteOut () {

	for (int i = 0; i < _num; i++) {
		for (int j = 0; j < _num; j++) {
			cout << _word[i][j];
		}
		cout << endl;
	}

}

int main () {

	ParseIn();
	Core();
	CWriteOut();

	return 0;
}
2021/6/29 16:39
加载中...