求助大佬们,鼠鼠我调了好几天了,还是WA,呜呜~~
查看原帖
求助大佬们,鼠鼠我调了好几天了,还是WA,呜呜~~
922032
qwer1234Q楼主2023/11/17 21:18
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n, i, j, count{};
	(cin >> n).get();
	unordered_map<int, char>mp;
	mp[0] = '*'; mp[1] = 'y'; mp[2] = 'i'; mp[3] = 'z'; mp[4] = 'h';
	mp[5] = 'o'; mp[6] = 'n'; mp[7] = 'g'; 
	vector<vector<int>>v(n + 1, vector<int>(n + 1));
	vector<vector<int>>v1(n + 1, vector<int>(n + 1));
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			char c;
			c = getchar();
			if (c == '\n') { 
				++count;
				--j; continue;
			}
			switch (c) {
			case 'y':v[i][j] = 1; break;
			case 'i':v[i][j] = 2; break;
			case 'z':v[i][j] = 3; break;
			case 'h':v[i][j] = 4; break;
			case 'o':v[i][j] = 5; break;
			case 'n':v[i][j] = 6; break;
			case 'g':v[i][j] = 7; break;
			default :v[i][j] = 0; break;
			}
		}
	}
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			if (v[i][j] == 1) {
				count=0;
				int k = 1;
				//右
				while (k+j-1 <=n) {
					if (v[i][j + k - 1] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for (; k <= 7; ++k)v1[i][j + k - 1] = v[i][j + k - 1];
				}count = 0; k = 1;
				//左
				while (j -k+1 >=1) {
					if (v[i][j - k + 1] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i][j - k + 1] = v[i][j - k + 1];
				}count = 0; k = 1;
				//上
				while (i - k + 1 >= 1) {
					if (v[i - k + 1][j] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i - k + 1][j] = v[i - k + 1][j];
				}count = 0; k = 1;
				//下
				while (i + k - 1 <= n) {
					if (v[i + k - 1][j] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i + k - 1][j] = v[i + k - 1][j];
				}count = 0; k = 1;
				//左上
				while (i + 1 - k >= 1 && j + 1 - k >= 1) {
					if (v[i + 1 - k][j + 1 - k] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i + 1 - k][j + 1 - k] = v[i + 1 - k][j + 1 - k];
				}count = 0; k = 1;
				//左下
				while (i - 1 + k <=n && j + 1 - k >= 1) {
					if (v[i - 1 + k][j + 1 - k] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i - 1 + k][j + 1 - k] = v[i - 1 + k][j + 1 - k];
				}count = 0; k = 1;
				//右上
				while (i + 1 - k >= 1 && j - 1 + k <=n) {
					if (v[i + 1 - k][j - 1 + k] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i + 1 - k][j - 1 + k] = v[i + 1 - k][j - 1 + k];
				}count = 0; k = 1;
				//右下
				while (i - 1 + k <=n&& j - 1 + k <=n) {
					if (v[i - 1 + k][j - 1 + k] == k)++count;
					else break;
					++k;
				}if (count == 7) {
					k = 1;
					for(;k<=7;++k)v1[i - 1 + k][j - 1 + k] = v[i - 1 + k][j - 1 + k];
				}
			}
		}
	}
	for (i = 1; i <= n; ++i) {
		for (j = 1; j <= n; ++j) {
			cout << mp[v1[i][j]];
			//cout << v1[i][j];
		}cout << endl;
	}//for(j=1;j<=n;++j)cout << mp[v1[i][j]];
	//cout << v1[i][j];
	return 0;
}
2023/11/17 21:18
加载中...