protect sheep

M | Protect sheep




题目分析
搜索每只狼的位置,再将每只狼用狗围住

代码

#include<iostream>
using namespace std;
char squ[501][501];
int m, n;
int flag = 1;
int dir[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };
int main()
{
	cin >> m >> n;
	int x, y, ex, ey;
	for (int i = 1; i <= m; i++)
		for (int j = 1; j <= n; j++)
			cin >> squ[i][j];
	for (int i = 1; i <= m; i++)
		for (int j = 1; j <= n; j++)
			if (squ[i][j] == 'W')
			{
				x = i;
				y = j;
				for (int k = 0; k < 4; k++)
				{
					ex = x + dir[k][0];
					ey = y + dir[k][1];
					if (ex >= 1 && ey >= 1 && ex <= m && ey <= n)
					{
						if (squ[ex][ey] == 'S')
						{
							flag = 0;
							break;
						}
						if (squ[ex][ey] == '.')
							squ[ex][ey] = 'D';
					}
				}
			}
	if (flag == 0)cout << "No";
	else
	{
		cout << "Yes" << endl;
		for (int i = 1; i <= m; i++)
		{
			if (i != 1)
				cout << endl;
			for (int j = 1; j <= n; j++)
				cout << squ[i][j];
		}
	}
	return 0;
}
posted @ 2022-01-23 16:12  Lewis_1231  阅读(35)  评论(0)    收藏  举报