当前位置: 首页 > article >正文

CSP 2024 入门级第二轮 CSP-J 2024 复赛 第二题 地图探险

一、题目阅读

[CSP-J 2024] 地图探险 - 洛谷

二、 题目分析

这题不能用DFS

用了超时。

其实用模拟就可以了。

void Solve() {
	visited[x][y] = true;
	for (int step = 1; step <= k; step++) {
		int nx, ny;
		nx = x + dir[d][0];
		ny = y + dir[d][1];
		if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && mp[nx][ny] == '.') {
			x = nx;
			y = ny;
			visited[nx][ny] = true;
		} else {
			d = (d + 1) % 4;
		}
	}
}

由于他是一步走到底,无需反复尝试,所以递归是无意义的。

如以上代码:反复改变x, y,以模拟机器人的移动。

以下是几个注意点:

visited[x][y] = true;

走过的路可以再走。

d = (d + 1) % 4;

d要求余改变。

dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0};

顺序按题目来,不要自己糊弄。

memset(visited, false, sizeof (visited));

每组数据重新初始化。

三、题目代码

 

#include <bits/stdc++.h>
using namespace std;

int n, m, k, x, y, d;
int dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0}; // 顺序按照题目来
char mp[1005][1005];
bool visited[1005][1005];

void Solve();


int main() {
	int T;
	cin >> T;
	while (T--) {
		memset(visited, false, sizeof (visited));
		cin >> n >> m >> k >> x >> y >> d;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				cin >> mp[i][j];
			}
		}
		Solve();
		int res = 0;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				if (visited[i][j] == true) {
					res++;
				}
			}
		}
		cout << res << endl;
	}
	return 0;
}


void Solve() {
	visited[x][y] = true;
	for (int step = 1; step <= k; step++) {
		int nx, ny;
		nx = x + dir[d][0];
		ny = y + dir[d][1];
		if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && mp[nx][ny] == '.') {
			x = nx;
			y = ny;
			visited[nx][ny] = true;
		} else {
			d = (d + 1) % 4;
		}
	}
}

http://www.kler.cn/a/379238.html

相关文章:

  • 「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件
  • EHOME视频平台EasyCVR萤石设备视频接入平台视频诊断技术可以识别哪些视频质量问题?
  • CentOS9 Stream 设置禁用IPV6
  • Linux 之 信号概念、进程、进程间通信、线程、线程同步
  • pycharm调用方法时显示为灰色
  • Fooocus图像生成软件本地部署教程:在Windows上快速上手AI创作
  • 李彦宏《应用来了》主题演讲海报官宣,百度世界或带来多个新发布
  • 网络编程及回显服务器
  • flutter 专题四 Flutter渲染流程
  • [云] 大数据分析栈(Big Data Analytics Stack)+ Apache Hadoop分布式文件系统(HDFS)+Apache Spark
  • CSS综合练习(学校官网静态网页)
  • java HashMap
  • Go-单元测试
  • 前端Election
  • 如何用Python同时抓取多个网页:深入ThreadPoolExecutor
  • Django ORM详解:外键使用(外键逻辑关联)与查询优化
  • excel指定单元格输入相同的值,比如给D1~D10000输入现在的值
  • 硅谷甄选(七)属性管理模块
  • Oracle视频基础1.4.3练习
  • RHCA IV之路---EX316-9
  • 019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
  • (57)MATLAB使用迫零均衡器和MMSE均衡器的BPSK调制系统仿真
  • 用图说明 CPU、MCU、MPU、SoC 的区别
  • Chromium127编译指南 Linux篇 - 同步第三方库以及Hooks(六)
  • blender导入的图片渲染看不见,图片预览正常,但渲染不出
  • 什么影响网站的SEO排名