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

UVa 225 Golygons 黄金图形 暴力搜索 剪枝 状态判断

题目链接:Golygons
题目描述:

给定nnnkkk个障碍物的坐标,你需要走nnn次,第一次走一个单位距离,第二次走二个单位距离,…,第nnn次走nnn个单位距离。走得过程中不能穿过或者到达障碍物所在的点,你走得方向为东南西北(也就是上下左右),但是需要注意的是,你每走一步你必须进行一次90°90\degree90°的转向,输出所有能够从(0,0)(0,0)(0,0)出发并且回到(0,0)(0,0)(0,0)位置的路径。
例如下图是一种合理的路径。
在这里插入图片描述
输出用newsnewsnews组成的字母表示。

题解:

本题我们从原点开始搜索下一次移动后的位置,并且我们判断移动路径上是否存在障碍物,如果不存在我们才能移动,同时需要判断到达的点我们之前是否到达过。这样在nnn次移动之后我们只需要判断是否回到了原点。
可以使用的剪枝:如果我们当前位置的横纵坐标的和大于剩下可以走得步数,那么我们可以直接进行剪枝。

代码:
注:最好不用STLSTLSTL,我开始用STLSTLSTL如果不开O2O2O2的话会超时

#include <bits/stdc++.h>const int MAX_COORDINATE = (1 + 20) * 20 / 2 / 2; // 移动要想回到原点最多20步走的最大距离的一半
const int o = MAX_COORDINATE; // 为了处理负数,我们将所有的坐标全部进行一次移动using namespace std;int T, n, k, x, y, ans;
bool block[(MAX_COORDINATE << 1) + 1][(MAX_COORDINATE << 1) + 1], vis[(MAX_COORDINATE << 1) + 1][(MAX_COORDINATE << 1) + 1];
string path;// 按字典序从小到大返回direction转向90度形成的方向
string getDirection(char direction)
{if (direction == 0) { return "ensw"; }else if (direction == 'e') { return "ns"; }else if (direction == 's') { return "ew"; }else if (direction == 'w') { return "ns"; }else { return "ew"; }
}// 朝某个方向走step步
void move(int &x, int &y, char direction, int step)
{if (direction == 'e') { x += step; }else if (direction == 'w') { x -= step; }else if (direction == 'n') { y += step; }else { y -= step; }
}// 判断路径上是否有障碍物
bool blocked(int a1, int b1, int a2, int b2)
{if (a1 == a2) {if (b1 > b2) { swap(b1, b2); }while(b1 <= b2) {if (block[a1][b1]) { return true; }b1++;}} else if (b1 == b2) {if (a1 > a2) {swap(a1, a2); }while(a1 <= a2) {if (block[a1][b1]) { return true; }a1++;}}return false;
}void dfs(int nowDepth, char lastDirection)
{if (nowDepth == n) {if (x == o && y == o) {ans++;cout << path << endl;}return;}if (abs(x - o) + abs(y - o) - (nowDepth + 1 + n) * (n - nowDepth) / 2 > 0) { return; }string direction = getDirection(lastDirection);for (char nowDirection : direction) {int tempX = x, tempY = y;int nx = x, ny = y;move(nx, ny, nowDirection, nowDepth + 1);if (vis[nx][ny] || blocked(x, y, nx, ny)) { continue; }vis[nx][ny] = true;x = nx, y = ny;path.push_back(nowDirection);dfs(nowDepth + 1, nowDirection);vis[nx][ny] = false;x = tempX, y = tempY;path.pop_back();}
}int main()
{ios::sync_with_stdio(false);cin >> T;while(T--) {cin >> n >> k;memset(vis, 0, sizeof(vis));memset(block, 0, sizeof(block));for (int i = 0; i < k; i++) {cin >> x >> y;if (abs(x) > MAX_COORDINATE || abs(y) > MAX_COORDINATE) { continue; } // 在范围外的不论如何都不会撞到block[x + MAX_COORDINATE][y + MAX_COORDINATE] = true;}ans = 0;x = y = o;path = "";dfs(0, 0);cout << "Found " << ans << " golygon(s)." << endl << endl;}return 0;
}

相关文章:

UVa 225 Golygons 黄金图形 暴力搜索 剪枝 状态判断

题目链接&#xff1a;Golygons 题目描述&#xff1a; 给定nnn和kkk个障碍物的坐标&#xff0c;你需要走nnn次&#xff0c;第一次走一个单位距离&#xff0c;第二次走二个单位距离&#xff0c;…&#xff0c;第nnn次走nnn个单位距离。走得过程中不能穿过或者到达障碍物所在的点&…...

PowerShell中的对象是神马?

在PowerShell中,无处不在体现出一个概念,这个概念是什么呢?就是对象,对象是面向对象的语言中非常重要的概念,PowerShell的底层是.net,也是面向对象的语言,因此它也继承了面向对象的语言的语法特性。但是很多人在使用PowerShell 语言的时候会觉得有些疑惑,到底什么是Pow…...

Proxy lab

CSAPP Proxy Lab 本实验需要实现一个web代理服务器&#xff0c;实现逐步从迭代到并发&#xff0c;到最终的具有缓存功能的并发代理服务器。 Web 代理是充当 Web 浏览器和终端服务器之间的中间人的程序。浏览器不是直接联系终端服务器获取网页&#xff0c;而是联系代理&#x…...

【机器学习】Sklearn 集成学习-投票分类器(VoteClassifier)

前言 在【机器学习】集成学习基础概念介绍中有提到过&#xff0c;集成学习的结合策略包括&#xff1a; 平均法、投票法和学习法。sklearn.ensemble库中的包含投票分类器(Voting Classifier) 和投票回归器&#xff08;Voting Regressor)&#xff0c;分别对回归任务和分类任务的…...

Day892.MySql读写分离过期读问题 -MySQL实战

MySql读写分离过期读问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于MySql读写分离过期读问题的内容。 一主多从架构的应用场景&#xff1a;读写分离&#xff0c;以及怎么处理主备延迟导致的读写分离问题。 一主多从的结构&#xff0c;其实就是读写分离的基本…...

无线蓝牙耳机哪个品牌音质好?性价比高音质好的蓝牙耳机排行榜

其实蓝牙耳机购买者最担忧的就是音质问题&#xff0c;怕拿到手的蓝牙耳机低频过重又闷又糊&#xff0c;听歌闷耳的问题&#xff0c;但从2021年蓝牙技术开始突飞猛进后&#xff0c;蓝牙耳机的音质、连接甚至是功能都发生了很大的变化&#xff0c;下面我分享几款性价比高音质的蓝…...

店铺微信公众号怎么创建?

有些小伙伴问店铺微信公众号怎么创建&#xff0c;在解答这个问题之前&#xff0c;先简单说说店铺和微信公众号关系&#xff1a; 店铺一般是指小程序店铺&#xff0c;商家通过小程序店铺来卖货&#xff1b;微信公众号则是一个发布信息的平台。但是两者之间可以打通&#xff0c;…...

goLang Mutex用法案例详解

Golang以其并发性Goroutines而闻名。不仅是并发,还有更多。 因此,在这种情况下,我们必须确保多个goroutines不应该同时试图修改资源,从而导致冲突。 为了确保资源一次只能被一个goroutine访问,我们可以使用一个叫做sync.Mutex的东西。 This concept is called mutual ex…...

java常见的异常

异常分类 Throwable 是java异常的顶级类&#xff0c;所有异常都继承于这个类。 Error,Exception是异常类的两个大分类。 Error Error是非程序异常&#xff0c;即程序不能捕获的异常&#xff0c;一般是编译或者系统性的错误&#xff0c;如OutOfMemorry内存溢出异常等。 Exc…...

从0开始学python -33

Python3 输入和输出 -1 在前面几个章节中&#xff0c;我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 — 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法&#xff…...

ModuleNotFoundError: No module named ‘glfw‘ 解决方案

错误描述 env gym.make(env_id) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/registration.py", line 619, in make env_creator load(spec_.entry_point) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/r…...

RadZen运行和部署,生成业务web应用程序

RadZen运行和部署,生成业务web应用程序 快速简单地生成业务web应用程序&#xff0c;可视化地构建和启动web程序&#xff0c;而我们为您创建新代码。 从信息开始 连接到数据库。Radzen推断您的信息并生成一个功能完备的web应用程序。支持MSSQL REST服务。 微调 添加页面或编辑生…...

分享7个比B站更刺激的老司机网站,别轻易点开

俗话说摸鱼一时爽&#xff0c;一直摸一直爽&#xff0c;作为一个程序员老司机了&#xff0c;一头乌黑浓密的头发还时不时被同事调侃&#xff0c;就靠这10个网站让我健康生活&#xff0c;不建议经常性使用&#xff0c;因为还有一句俗话&#xff0c;那就是“摸鱼一时爽&#xff0…...

浅析:如何在Vue3+Vite中使用JSX

目录 0. Vue3&#xff0c;Vite&#xff0c;JSX 三者的关系 JSX介绍 在 Vue3 中使用 JSX 安装插件&#xff08;vitejs/plugin-vue-jsx&#xff09; 新建 jsx 文件 语法 补充知识&#xff1a;注意事项 0. Vue3&#xff0c;Vite&#xff0c;JSX 三者的关系 Vue3、Vite 和 …...

开发小程序需要什么技术?

小程序是一种新的开发能力&#xff0c;相比于原生APP 开发周期短&#xff0c;开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。 开发小程序需要什么技术? 前端技术基础&#xff1a;html、js、css。具体到小程序&a…...

7个营销人员常见的社交媒体问题以及解决方法

在如今的数字营销时代&#xff0c;许多营销人员都害怕在社交媒体上犯错。他们担心他们的社交媒体中的失误会演变成一场公关危机。面对一些常见的社交媒体问题&#xff0c;您需要知道如何避免和解决。对于数字营销人员来说&#xff0c;在现在这个信息互通&#xff0c;每时每刻都…...

BFC 是什么

在页面布局的时候&#xff0c;经常出现以下情况&#xff1a; 这个元素高度怎么没了&#xff1f;这两栏布局怎么没法自适应&#xff1f;这两个元素的间距怎么有点奇怪的样子&#xff1f;...... 原因是元素之间相互的影响&#xff0c;导致了意料之外的情况&#xff0c;这里就涉及…...

07 react+echart+大屏

reactechart大屏大屏ECharts 图表实际步骤React Typescript搭建大屏项目&#xff0c;并实现屏幕适配flexible rem实现适配1. 安装插件对echarts进行的React封装&#xff0c;可以用于React项目中&#xff0c;支持JS、TS如何使用完整例子官网参考大屏 ECharts 图表 ECharts 图…...

Linux/Ubuntu安装部署Odoo15仓管系统,只需不到十步---史上最成功

sudo apt-get update sudo apt install postgresql -y sudo apt-get -f install sudo dpkg -i /home/ubuntu/odoo_15.0.latest_all.deb —报错再次执行上一条命令再执行 —安装包地址&#xff1a;http://nightly.odoo.com/15.0/nightly/deb/–翻到最下面 sudo apt-get ins…...

Python奇异值分解

当AAA是方阵时&#xff0c;可以很容易地进行特征分解&#xff1a;AWΣW−1AW\Sigma W^{-1}AWΣW−1&#xff0c;其中Σ\SigmaΣ是AAA的特征值组成的对角矩阵。如果WWW由标准正交基组成&#xff0c;则W−1WTW^{-1}W^TW−1WT&#xff0c;特征分解可进一步写成WTΣWW^T\Sigma WWTΣ…...

AWS攻略——子网

文章目录分配子网给Public子网分配互联网网关创建互联网网关附加到VPC给Public子网创建路由表关联子网打通Public子网和互联网网关创建Public子网下的EC2进行测试配置Private子网路由给Private子网创建路由表附加在Private子网创建Private子网下的EC2进行测试创建实例在跳板机上…...

java面试 - mq

RocketMq和RabbitMq的优缺点 1、RabbitMQ 优点&#xff1a;rabbitMq 几万级数据量&#xff0c;基于erlang语言开发&#xff0c;因此响应速度快些&#xff0c;并且社区活跃度比较活跃&#xff0c;可视化界面。 缺点&#xff1a;数据吞吐量相对与小一些&#xff0c;并且是基于er…...

PTP GPTP芯片资料翻译88E6352

88E6352应用 网关 车载信息娱乐 车身域控制器 PTP PTP通过周期型地交换控制包实现 选择其中网络最佳质量时钟元素&#xff0c;作为PTP网络中Grand Master.没有Grand Master 节点变成PTP slave节点。PTP节点从Grand Master节点获得他们驱动频率和时间信息。 基本观念是PTP帧…...

用Python实现一个电影订票系统

一、效果展示通过Python实现一个电影订票系统&#xff0c;效果如下所示&#xff1a;二、整体结构图三、代码分解3.1 infos.py一部电影的详细信息适合用 字典 结构来存储&#xff0c;我们可以给字典里添加多个键值对来保存电影的名称、座位表和宣传时用的字符画&#xff0c;比如…...

什么是瞪铃企业

“瞪羚企业”是指创业后跨过死亡谷以科技创新或商业模式创新为支撑进入高成长期的中小企业。认定范围主要是产业领域符合国家和省战略新兴产业发展方向&#xff0c;涵盖新兴工业、新一代信息技术、生物健康、人工智能、金融科技、节能环保、消费升级等领域。按照硅谷的解释&…...

【深度学习】多分类问题和多标签分类问题

上一章——激活函数 文章目录什么是多分类问题Softmax贝叶斯公式softmax的损失函数多标签分类问题什么是多分类问题 在之前的课程中&#xff0c;我们学习了二分问题&#xff0c;二分问题中的所有数据会被分类为0和1&#xff08;或者Ture和False&#xff09;两种输出标签。但是…...

大学生开学买什么,返校必备数码好物推荐

开学还不知道需要准备些什么&#xff0c;这篇开学数码好物&#xff0c;希望能够对你在开学购买的好物有一些帮助&#xff0c;一款好的数码装备&#xff0c;可以让我们在学校学习当中能够用最少的时间&#xff0c;最大的产出&#xff0c;节省时间&#xff0c;提高学习效率&#…...

Unreal Engine06:Actor的实现

写在前面 Actor是可以放进地图的最基本类&#xff0c;这里主要是介绍一下Actor的使用。 一、空间坐标系 1. Actor的变换操作 Actor的变换变换操作主要包括四个部分&#xff1a; 位置&#xff1b;旋转&#xff1b;缩放&#xff1b; 上面三者都是对应三个轴进行变换&#xff1…...

2023美国大学生数学建模竞赛C题思路解析(含代码+数据可视化)

以下为2023美国大学生数学建模竞赛C题思路解析&#xff08;含代码数据可视化&#xff09;规则&#xff1a;猜词&#xff0c;字母猜对&#xff0c;位置不对为黄色&#xff0c;位置对为绿色&#xff0c;两者皆不对为灰色。困难模式下的要求&#xff1a;对于猜对的字母&#xff08…...

aws codebuild 自定义构建环境和本地构建

参考资料 Extending AWS CodeBuild with Custom Build Environments Docker in custom image sample for CodeBuild codebuild自定义构建环境 在创建codebuild项目的时候发现 构建环境是 Docker 映像&#xff0c;其中包含构建和测试项目所需的所有内容的完整文件系统 用ru…...

代理下单网站开发/国外网站推广

翻译&#xff1a;张睿毅&#xff1b;校对&#xff1a;王威力本文约4000字&#xff0c;建议阅读8分钟。本文为你介绍超级数据科学家的13大基本技能。&#xff08;链接&#xff1a;https://www.linkedin.com/feed/update/urn:li:activity:6531492123240431616 &#xff09;好的数…...

wordpress中文版源码/seo咨询解决方案

目录 EFK架构&#xff08;elasticsearch\filebeat\kibana&#xff09; 1、下载elasticsearch、kibana、filebeat 2、创建用户并授权 3、安装并启动 3.1 使用elasticsearch账号安装启动 >3.1.1 解压 elasticsearch >3.1.2 配置 elasticsearch >3.1.3 启动elast…...

jmail官方网站/怎么创建自己的网址

消费者和企业总想“以少获多”&#xff0c;并且总会这样做&#xff1b;这也在无形中推动了我们的市场发展&#xff0c;为技术创新者创造了无限机会。在系统领域&#xff0c;“以少获多”往往意味着“高度集成”。将更多功能集中到一个芯片中可以降低成本&#xff0c;使解决方案…...

银川网站建设报价/推广方案100个

一、向量&#xff1a;1.直接相等加减直接D3DXVec3LengthD3DXVec3Normalize数乘直接2.点乘D3DXVec3Dot点乘D3DXVec3Dot,主要计算夹角&#xff08;投影角&#xff09;V1( x1, y1).V2(x2, y2) x1*x2 y1*y2A.B |A||B|Cos(θ)FLOAT D3DXVec3Dot(_In_ const D3DXVECTOR3 *pV1,_In…...

网站 个人 公司 区别/查关键词热度的网站

9月6日匆匆返回学校参加阿里和华为的面试和笔试。阿里直接一面杯具&#xff0c;华为杯具的提交错文件&#xff0c;肯定0分了。还得墙面。 这份题目是9月7日下午最后一批的上机题&#xff0c;应该是两天来笔试中难度最大的&#xff0c;第一天和第二天上午的题都比较简单&#xf…...

深圳市企业服务体系平台建设方案/全网优化哪家好

以下介绍经常使用的集合类&#xff0c;这里不介绍集合类的使用方法&#xff0c;只介绍每个集合类的用途和特点&#xff0c;然后通过比较相关集合类的不同特点来让我们更深入的了解它们。Collection接口Collection是最基本的集合接口&#xff0c;一个Collection代表一组Object&a…...