棋盘控制搜索

98 篇文章 0 订阅

有一个n行m列的棋盘,初始化全部为白色,根据输入,控制每个格子的颜色或者搜索展示第一个遇到的白色单元格,如果没找到,则输出-1;如果找到,则输出找到的白色单元格坐标x,y。

注意:查找的单元格不包含自身,且单元格左上角从(1,1)开始
控制动作为:
c 将单元格改为黑色
l 从当前单元格向左搜索
r 从当前单元格向右搜索
u 从当前单元格向上搜索
d 从当前单元格向下搜索

例子:
5 5 20
l 3 5
r 4 3
u 4 5
d 2 4

int boardControl() {
	int n, m, k;
	cin >> n;
	cin >> m;
	cin >> k;
	vector<vector<char>> board = vector(n + 1, vector<char>(m + 1, 'W'));
	char ch;
	int x, y;
	for (int i = 0; i < k; i++) {
		cin >> ch;
		cin >> x;
		cin >> y;
		if (x < 1 || x > n || y < 1 || y > m) {
			cout << -1 << endl;
			continue;
		}
		int flag = false;
		if (ch == 'c') {
			board[x][y] = 'B';//涂黑
		}
		else if (ch == 'l') {
			for (int j = y - 1; j > 0; j--) {
				if (board[x][j] == 'W') {
					cout << x << " " << j << endl;
					flag = true;
					break;
				}
			}
			if (flag == false) {
				cout << -1 << endl;
			}
		}
		else if (ch == 'r') {
			for (int j = y + 1; j < m + 1; j++) {
				if (board[x][j] == 'W') {
					cout << x << " " << j << endl;
					flag = true;
					break;
				}
			}
			if (flag == false) {
				cout << -1 << endl;
			}
		}
		else if (ch == 'u') {
			for (int j = x - 1; j > 0; j--) {
				if (board[j][y] == 'W') {
					cout << j << " " << y << endl;
					flag = true;
					break;
				}
			}
			if (flag == false) {
				cout << -1 << endl;
			}
		}
		else if (ch == 'd') {
			for (int j = x + 1; j < n + 1; j++) {
				if (board[j][y] == 'W') {
					cout << j << " " << y << endl;
					flag = true;
					break;
				}
			}
			if (flag == false) {
				cout << -1 << endl;
			}
		}
		else {
			cout << "非法输入" << endl;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

colorful_stars

您是我见过全宇宙最可爱的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值