当前位置: 首页 > 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

相关文章:

  • Redis 3.2.1在Win10系统上的安装教程
  • 3 前端(上): Web开发相关概念 、HTML语法、CSS语法
  • Scala语言的多线程编程
  • 算法库里的heap算法,仿函数和模版进阶(续)
  • 数据结构-线性表
  • [AI部署-tensorRT] customlayer定义添加过程解析
  • 李彦宏《应用来了》主题演讲海报官宣,百度世界或带来多个新发布
  • 网络编程及回显服务器
  • 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排名