【蓝桥杯】试题 历届真题 路径之谜【第七届】【决赛】【A组】

第七届蓝桥杯参赛经历回顾 现在是2017年5月26日 14:14 上不了电脑,用手机写的草稿。明天是第八届蓝桥杯决赛的日子,蓝桥杯似乎越办越好了,看着广大童鞋说这一届试题比往届更暴力,有种莫名的愉悦。 去年刚刚参加了蓝桥杯,报了JavaB组,成功避开了A组和C语言组的大神们,水了个国三。。。考完就懈怠了准备期末考试去了,也没研究试题。 觉得Java组真心好办事,自带很多方便的api,如Calendar类解决了大多简单日 阅读详情

dfs把所有可能的路径全找了,看看哪个符合要求。用northsum记录北边还可射的箭矢和,westsum记录南边还可射的箭矢和,当他们都为0同时处于最后一个格子就说明找到路径了。

最开始我是用两个数组去存放射了的箭矢,然后每次调用递归函数都和输入的箭矢数目比对,但超时了,哪怕最多只遍历20个位置,所以递归函数里能不用循环就不用循环。

过了的代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<math.h>
#include<set>
#include<string>
#include<stack>
using namespace std;
#include<queue>
int northSum = 0;//北边还可射的箭总和
int westSum = 0;//西边还可射的箭总和
vector<int>ans;
//dfs的过程,grid是城堡(0表示没走过,1表示走过),path是已经走过的路径,已走过的路径留下的北边的箭
//west是已走过的路径留下的西边的箭,ti,tj是当前坐标
void backtrack(vector<vector<int> >& grid, vector<int>& path, vector<int>& north, vector<int>& west, int ti, int tj)
{
	if (ti < 0 || ti >= grid.size() || tj < 0 || tj >= grid.size() || grid[ti][tj] == 1 || ans.size() != 0 || north[tj] <= 0 || west[ti] <= 0)
	{
		return;
	}
	//west和north记录走过的路径留下的箭,当小于0的时候已经不可能满足了,用来剪枝
	west[ti]--;
	north[tj]--;
	grid[ti][tj] = 1;
	//走到这里,就在西边箭的总和和北边箭的总和减去1,当他们为0同时在最后一个格子就是找到路径了
	westSum--;
	northSum--;
	path.push_back(ti * grid.size() + tj);//公式计算当前位置的编号
	//找到了路径
	if (ti == grid.size() - 1 && tj == grid.size() - 1 && westSum == 0 && northSum == 0)
	{
		ans = path;
		return;
	}
	//朝四个方向走
	backtrack(grid, path, north, west, ti + 1, tj);
	backtrack(grid, path, north, west, ti - 1, tj);
	backtrack(grid, path, north, west, ti, tj - 1);
	backtrack(grid, path, north, west, ti, tj + 1);
	//回溯过程
	grid[ti][tj] = 0;
	north[tj]++;
	west[ti]++;
	westSum++;
	northSum++;
	path.pop_back();
}
int main()
{
	int n = 0;
	cin >> n;
	vector<vector<int> >grid(n, vector<int>(n, 0));
	vector<int>north(n, 0);
	vector<int>west(n, 0);
	for (int i = 0; i < n; i++)
	{
		cin >> north[i];
		northSum += north[i];
	}
	for (int i = 0; i < n; i++)
	{
		cin >> west[i];
		westSum += west[i];
	}
	vector<int>path;
	backtrack(grid, path, north, west, 0, 0);
	for (int i = 0; i < ans.size(); i++)
	{
		cout << ans[i] << " ";
	}
	return 0;
}

顺便贴一个超时的代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<math.h>
#include<set>
#include<string>
#include<stack>
using namespace std;
#include<queue>

vector<int>north1;
vector<int>west1;
vector<int>ans;
void backtrack(vector<vector<int> >& grid, vector<int>& path, vector<int>& north, vector<int>& west, int ti, int tj)
{
	if (ti < 0 || ti >= grid.size() || tj < 0 || tj >= grid.size() || grid[ti][tj] == 1||ans.size()!=0)
	{
		return;
	}
	west[ti]++;
	north[tj]++;
	grid[ti][tj] = 1;
	path.push_back(ti * grid.size() + tj);
	if (ti == grid.size() - 1 && tj == grid.size() - 1)
	{
		int tmp = 0;
//就是这个循环,超时了
		for (int i = 0; i < grid.size(); i++)
		{
			if (north1[i] == north[i] && west1[i] == west[i])
			{
				tmp++;
			}
			if (north[i] > north1[i] || west[i] > west1[i])
			{
				grid[ti][tj] = 0;
				north[tj]--;
				west[ti]--;
				path.pop_back();
				return;
			}
		}
		if (tmp == grid.size())
		{
			ans = path;
			return;
		}
	}
	backtrack(grid, path, north, west, ti + 1, tj);
	backtrack(grid, path, north, west, ti - 1, tj);
	backtrack(grid, path, north, west, ti, tj - 1);
	backtrack(grid, path, north, west, ti, tj + 1);
	grid[ti][tj] = 0;
	north[tj]--;
	west[ti]--;
	path.pop_back();
}
int main()
{
	int n = 0;
	cin >> n;
	vector<vector<int> >grid(n, vector<int>(n, 0));
	north1.resize(n);
	west1.resize(n);
	vector<int>north(n, 0);
	vector<int>west(n, 0);
	for (int i = 0; i < n; i++)
	{
		cin >> north1[i];
	}
	for (int i = 0; i < n; i++)
	{
		cin >> west1[i];
	}
	vector<int>path;
	backtrack(grid, path, north, west, 0, 0);
	for (int i = 0; i < ans.size(); i++)
	{
		cout << ans[i] << " ";
	}
	return 0;
}

SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全 SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全。版本:SolidWorks2021。电脑:惠普战66四代。软件安装不困难! 阅读详情

相关推荐

Python数据清洗实战:用RapidFuzz搞定模糊匹配(附完整代码示例)

本文详细介绍了在Python数据清洗中,如何利用RapidFuzz库高效解决字符模糊匹配难题。通过实战代码示例,演示了从处理拼写错误、格式不一致的脏数据,到构建实体对齐与记录去重的完整清洗管道,帮助开发者提升数据质量与处理效率。

pear55的博客 532

蓝桥杯真题【路径之谜】

【代码】蓝桥杯真题【路径之谜】

量变引起质变。 855

深入解析 ReDoc:从零构建高性能 API 文档的终极指南

ReDoc 是一个强大的开源工具,用于将 OpenAPI 规范转换为高质量、响应式的 API 文档。本文详细介绍了如何使用 ReDoc 构建和自定义 API 文档,包括如何编写支持 OpenAPI 的 API 注解、配置 HTML 页面以加载文档,以及如何利用 ReDoc 的高级功能进行定制。通过实例代码,您将学会如何灵活地展示 API 文档,提升用户体验。无论是初学者还是经验丰富的开发者,都能从本文中获得实用的技巧与方案,帮助快速搭建符合需求的 API 文档界面。

楠搏万的博客 4623

蓝桥杯 第七届决赛 路径之谜

路径之谜 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n x n 个方格。【如图1.png】所示。 按习俗,骑士要从西北角走到东南角。 可以横向或纵向移动,但不能斜着走,也不能跳跃。 每走到一个新方格,就要向正北方和正西方各射一箭。 (城堡的西墙和北墙内各有 n 个靶子) 同一个

qq_32523369的博客 673

底层软件测试规范,QA评审底层测试

本文首发于【林子的空间】“林子,咱们上次讨论的高效Desk check清单,用起来还挺好的,最近我们组每次Desk check变得顺利多了,Dev也是越来越熟练。”玥玥跟我说。“真好!我们组感觉也是这样!”“不过,我听小慧说他们组有人对QA review UT提出了一些concern(质疑),觉得QA review的价值不大,基本都是Dev给讲一遍,QA也提不出来什么反馈...”玥玥补充说道。“哦...

weixin_42144707的博客 1188

Windows Server 2012评估版过期自动关机问题:两种高效解决方案详解

本文针对Windows Server 2012评估版过期导致的自动关机问题,提供了两种高效解决方案。一是通过slmgr.vbs命令重置授权,临时延长评估期;二是使用DISM工具将评估版转换为正式版,一劳永逸。文章详细解析了两种方法的操作步骤、注意事项及适用场景,帮助用户快速恢复服务器稳定运行。

pytorchlight8的博客 1195

蓝桥杯11 路径之谜

本文介绍了在网格中寻找满足行列配额约束的路径问题的解决方法。通过DFS回溯算法,结合行列配额约束、访问标记和路径记录,实现了有效搜索。重点讲解了剪枝优化策略,包括距离下界剪枝和奇偶性剪枝,以提升搜索效率。同时说明了如何保证输出字典序最小的解,通过将候选点按编号排序后优先尝试小编号节点。

2301_79609207的博客 975

DSSAT模型实战:从基础配置到气候情景模拟

本文详细介绍了DSSAT模型在农业模拟中的应用,从基础配置到气候情景模拟的全流程实战指南。通过土壤-植物-大气连续体的动态关系建模,DSSAT能精准预测作物产量,误差率低至8%。文章涵盖气象数据处理、土壤参数配置、管理措施调控等核心技巧,并提供了Python脚本和可视化方法,助力农业科研与决策。

weixin_29264201的博客 1012

蓝桥杯--第七届决赛:路径之谜

路径之谜小明冒充X星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 n x n 个方格。【如图1.png】所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不能跳跃。每走到一个新方格,就要向正北方和正西方各射一箭。(城堡的西墙和北墙内各有 n 个靶子)同一个方格只允许经过一次。但不必做完所有的方格。如果只给出靶子上箭的数目,你能...

yf224的博客 3395

Halcon —— 图像像素类型与转换

图像类型 就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

华为OD机试 新系统真题 【数字系统转换器】

华为OD机试 新系统真题【数字系统转换器】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【数字系统转换器】多语言题解。

qq_45776114的博客 540

第八届蓝桥杯-2017-决赛A组-c++题解②路径之谜

路径之谜小明冒充X星球的骑士,进入了一个奇怪的城堡。城堡里边什么都没有,只有方形石头铺成的地面。假设城堡地面是 n x n 个方格。【如图1.png】所示。按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不能跳跃。每走到一个新方格,就要向正北方和正西方各射一箭。(城堡的西墙和北墙内各有 n 个靶子)同一个方格只允许经过一次。但不必走完所有的方格。如果只给出靶子上箭的数目,你能...

志远的博客 1096

RK3568实现蓝牙音箱功能

A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。注意A2DP协议要与AVRCP协议区分开。A2DP是传输音频的,而AVRCP是用来控制音频的。这里我用到的是RK3568 Android11。

leikko的博客 1174

蓝桥杯 2017年试题 历届真题 路径之谜【第七届】【决赛】c++

蓝桥杯 2017年试题 历届真题 路径之谜【第七届】【决赛】c++

FL_MJ的博客 571

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[蓝桥杯][2016年第七届真题]路径之谜

题目链接:路径之谜 解题思路:搜索每一天能到达右下角点的路径,经过每一个位置时,给它的x、y都加上1的贡献,最后到达右下角时,如果x、y的值等于输入的箭靶的数目则为正确答案 #include<bits/stdc++.h> #define x first #define y second #define mem(h) memset(h,-1,sizeof h) #define mcp(a,b) memcpy(a,b,sizeof b) using namespace std; typedef

一名蒟蒻的博客 506

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝桥杯 历届真题 路径之谜【第七届】【决赛】【C组】85分

经典的dfs题目,重点在于找到终止递归的条件check函数和判断是否进行下一曾dfs搜索的judge函数。而在本解法中剪枝直接在check函数中完成,并使用sys.exit()语句在找到答案时输出答案并立刻跳出,以减少回溯的时间。第一行一个整数N(0<N<20),表示地面有 N x N 个方格。第二行N个整数,空格分开,表示北边的箭靶上的数字(自西向东)第三行N个整数,空格分开,表示西边的箭靶上的数字(自北向南)小明冒充X星球的骑士,进入了一个奇怪的城堡。有时是可以的,比如图1.png中的例子。

2302_80407081的博客 997

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝桥杯javaB决赛历届真题6-10届

蓝桥杯javaB决赛历届真题第六届T1 分机号T2 五星填数T3 显示二叉树T4 穿越雷区T5 表格计算T6 铺瓷砖第七届T1 愤怒小鸟T2 反幻方T3 打靶T4 路径之谜T5 碱基T6 圆圈舞第八届T1 平方十位数T2 生命游戏T3 树形显示T4 小计算器T5 填字母游戏第九届T1T2T3 全排列T4 整理玩具T6 防御力 第六届 T1 分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如: 751,520,321 都满足要求,而, 766,

qq_45566354的博客 2694

历届蓝桥杯JavaC组真题标题

六届 校赛 标题:杨辉三角 标题:调和级数 标题:回文素数 标题:让我怎能过大年 标题:位平方和。 标题:1/a的分数称为单位分数。 标题:上台阶 六届 省赛 标题:隔行变色 标题:立方尾不变 标题:无穷分数 标题:循环节长度 标题:格子中输出 标题:奇妙的数字 标题:加法变乘法 标题:移动距离 标题:打印大X 标题:垒骰子 六届 决赛 标题:机器人数目 标题:生成回文数 标题:空心菱形 标题:奇怪的数列 标题:密文搜索 标题:居民集会 七届 省赛 标题:有奖

书生的博客 1969

第十届蓝桥杯大赛软件类决赛(Java 大学A组)

第十届蓝桥杯大赛软件赛省赛 Java 大学 A 组

NOW I GOT ONE WAY 2455

蓝桥杯 试题 历届真题 路径之谜【第七届】【决赛】【B组】

传送门 题目 小明冒充X星球的骑士,进入了一个奇怪的城堡。   城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n x n 个方格。如下图所示: 按习俗,骑士要从西北角走到东南角。   可以横向或纵向移动,但不能斜着走,也不能跳跃。   每走到一个新方格,就要向正北方和正西方各射一箭。   (城堡的西墙和北墙内各有 n 个靶子) 同一个方格只允许经过一次。但不必做完所有的方格。 如果只给出靶子上箭的数目,你能推断出骑士的行走路线吗? 有时是可以的,比如图1.png中的例子。 本题的要求就是已知

m0_52394190的博客 346

蓝桥杯官网 试题 PREV-251 历届真题 补给【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法

为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。 今年的最大目标就是能为【一亿技术人】创造更高的价值。 资源限制: 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s C++ #include<bits/stdc++.h> using namespace std; #define fi first #define se second

红目香薰 1274

第八届B组蓝桥杯决赛

历年蓝桥杯决赛题目汇总

qq_40871196的博客 484

蓝桥杯官网 试题 PREV-111 历届真题 大胖子走迷宫【第十届】【决赛】【研究生组】【C++】【Java】【Python】三种解法

为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。 今年的最大目标就是能为【一亿技术人】创造更高的价值。 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s C++ #include <bits/stdc++.h> using namespace std; const int N=310; char s[N][N...

红目香薰 620

蓝桥杯十大常见天阶功法——炎之呼吸.叁之型.动态规划--(上篇)

大赛来临之前,由闫式,由历届真题,由诸多模型,陪你一起拿捏动态规划

weixin_52621323的博客 9103

蓝桥杯--历届真题 穿越雷区【第六届】【决赛】【B组】

试题 历届真题 穿越雷区【第六届】【决赛】【B组】 提交此题评测记录 资源限制 时间限制:1.0s 内存限制:256.0MB   X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。   某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?   已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。   例如:   A + - + -   - + - - +  ...

with_wine的博客 1397

蓝桥杯官网 试题 PREV-236 历届真题 出租车【第十一届】【决赛】【研究生组】【C++】一种解法

为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来。希望能对大家的成绩有所帮助。 今年的最大目标就是能为【一亿技术人】创造更高的价值。 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s C++ #include<cstdio> #include<cstring> #include<algorithm> const i...

红目香薰 770
上一篇: 【蓝桥杯】试题 历届真题 饮料换购【第六届】【省赛】【A组】
下一篇: 【蓝桥杯】试题 历届试题 回文日期【第十一届】【省赛】【A组】
qwer_tyuiop1
博客等级 码龄5年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值