UVA 225 - Golygons(dfs回溯)

uva 225 - Golygons(暴力) 题目链接:uva 225 - Golygons 题目大意:从(0,0)出发,每次走1,2,3...,n。能回到原点的方案,每次走完需要改变方向,也不可以往回走。然后会给出k个障碍物的坐标。不可以经过障碍物。并且停留的地方不可以重复。输出所有方案,按照字典序。 解题思路:被坐标坑死了,一直RE,注意一下坐标关系就可以了,字典序可以从一开始找方向就处理掉。 #includ 阅读详情

题意:

一个探险队要去参观城市,走n次,每次走1,2,3,4,5,…n步,参观停留的城市,每次方向转90度。路途中有一些障碍物是不能走的,之前拐弯过的点也是不能走的。求所有走法,按字典序输出。

解析:

直接回溯深搜就可以了。

AC代码

#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
const int N = 1000;
const int LEN = 500;
const char str[] = "nsew";
//  N  S  W  E
const int dx[] = { 1,-1, 0, 0};
const int dy[] = { 0, 0, 1,-1};
string ans[N];
int last, m, tot, path[N];
bool grid[N][N], vis[N][N];

bool can_move(int x, int y, int xx, int yy) {
    int from, to;
    if(x == xx) {
        from = min(y, yy);
        to = max(y, yy);
        for(int i = from; i <= to; i++)
            if(grid[xx][i]) return false;
    }else if(y == yy) {
        from = min(x, xx);
        to = max(x, xx);
        for(int i = from; i <= to; i++)
            if(grid[i][yy]) return false;
    }
    return true;
}
void dfs(int x, int y, int dir, int cur) {
    if(cur == last) {
        if(x == LEN && y == LEN) {
            ans[tot] = "";
            for(int i = 0; i < last; i++)
                ans[tot] += str[path[i]];
            tot++;
        }
        return ;
    }
    int xx, yy, d;
    if(dir == 0 || dir == 1) d = 2;
    else d = 0;
    for(int i = 0; i < 2; i++) {
        xx = x + (cur+1)*dx[d+i];
        yy = y + (cur+1)*dy[d+i];
        if(!vis[xx][yy] && can_move(x, y, xx, yy)) {
            path[cur] = d+i;
            vis[xx][yy] = true;
            dfs(xx, yy, d+i, cur+1);
            vis[xx][yy] = false;
        }
    }
}
int main() {
    //freopen("in.txt", "r", stdin);
    int T;
    scanf("%d", &T);
    while(T--) {
        memset(vis, 0, sizeof(vis));
        memset(grid, 0, sizeof(grid));
        scanf("%d%d",&last, &m);
        int x, y;
        for(int i = 0; i < m; i++) {
            scanf("%d%d", &x, &y);
            grid[y+LEN][x+LEN] = true;
        }
        tot = 0;
        for(int i = 0; i < 4; i++) {
            memset(vis, false, sizeof(vis));
            path[0] = i;
            dfs(LEN+dx[i], LEN+dy[i], i, 1);
        }
        sort(ans, ans+tot);
        for(int i = 0; i < tot; i++) {
            puts(ans[i].c_str());
        }
        printf("Found %d golygon(s).\n\n", tot);
    }
    return 0;
}
MWORKS物理建模方法论:端口-连接-约束三要素 电路建模本质是将物理系统转化为可计算的数学表达。传统信号流图建模易割裂设计与实测,而基于物理域的建模以能量守恒和基尔霍夫定律为原理,通过端口(Port)、连接(Connection)、约束(Constraint)统一描述元件行为,天然支持寄生参数、非线性特性与多域耦合。该方法显著提升RLC谐振分析精度、信号调理链路验证效率及交流网络潮流仿真可信度,广泛应用于高校电路实验、电力电子开发与工业控制系统设计。MWORKS作为典型物理建模平台,其Modelica底层框架使工程师能直接操作电容ESR、电感分布电容、运 阅读详情

相关推荐

K8S证书过期解决办法之替换证书

k8s证书过期解决方案之替换证书

q_hsolucky的博客 1万+

【uva】225 - Golygons(dfs有坑)

dfs的路径问题,毕竟坑d

花月阁 1277

能量机关 STM32HAL库开发大疆A板WS2812B彩灯(PWM+DMA)

本文主要目的是为了制作RoboMaster比赛能量机关的灯条控制,模拟比赛场中大符,搭建出类似场地道具,以供视觉测试 使用的是RoboMaster开发板A型,芯片为STM32F427IIH6,使用的灯条为WS2812B。 采用PWM+DMA控制,使用CUBEMX配置底层,keil5编辑烧录代码 实现:一共五片扇叶,每片扇叶均实现流水灯+常亮颜色 参考文章在后面会标记出来

m0_51756449的博客 4292

UVA - 225 Golygons

题意:求从原点开始依次走1,2...n步后到回到原点的方案数,其中不能经过障碍,每次必须左右拐 思路:一个比较简单的DFS,结果做了好久#include #include #include #include using namespace std; const int MAXN = 250; const int Add = 100; int n, ans; int G[MAXN][M

那些年 1394

缠论 公式 自动画线 画笔 中枢 买卖点 源代码

【代码】缠论 公式 自动画线 画笔 中枢 买卖点 源代码。

weixin_40835859的博客 2万+

2025软考信息安全工程师真题

2025信息安全工程师软考真题

qq_40424393的博客 1707

UVa 225 – Golygons [DFS+剪枝]

距离100题还有4道,此时最忌讳急于求成,所以打算做题不看题解,有时候一道题很难需要想很多甚至做好几天都不能AC,但正是自己不断修改错误,优化代码,才使得自己的编程水平有进步,最后的AC才更加有成就感。 这道题思路还算简单,但是需要加各种剪枝条件,如当前做到达的地方能否再走n-d步到达原点,我感觉像是A*算法,提前估计当前状态还需要扩展几层才能得到目标状态。 经历了三次TL...

weixin_30315905的博客 133

华为OD机试真题2025双机位A卷 C++ 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 674

UVA225 Golygons(DFS + 回溯)

本题vjudge链接 题意:一个网格图,现在给你图中k(k≤50)k(k \le 50)k(k≤50)个障碍的坐标(坐标可能为负),不能继续上次的方向继续走也不能后退,这就意味着只能左右走,第iii次走iii个单位,从(0, 0)点出发,走了n(n≤20)n(n \le 20)n(n≤20)次恰好回到(0, 0)点,让你输出所有可能的路线,按字典序输出 因为深度已知,所以我才用了DFS的方法,考虑到坐标可能有负数,所以我把坐标原点移动了一下,将(1000, 1000)记为原点,其余点也一样有同样变化,因为

hao_6_6的博客 207

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2322

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559

UVA 225 - Golygons(dfs回溯)

Golygons  Imagine a country whose cities have all their streets laid out in a regular grid. Now suppose that a tourist with an obsession for geometry is planning expeditions to several su

Remilia's 3796

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Uva225 Golygons 【dfs回溯】【习题7-2】

按着dfs回溯的基本套路来!!!,剪枝思想!!!,STL使用需谨慎!

GuoZLH的博客 852

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

UVa 225 - Golygons ( DFS, 回溯, 剪枝 )

题意 平面上有k个障碍点。从(0,0)点出发,第一次走1个单位,第二次走2个单位,……,第n次走n个单位,恰好回到(0,0)。要求只能沿着东南西北方向走,且每次必须转弯90°(不能沿着同一个方向继续走,也不能后退)。走出的图形可以自交,但不能经过障碍点 AC代码 #include <iostream> #inclu...

a7152326的博客 123

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

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

UVa 225 - Golygons(DFS+回溯)

在一个平面上从原点出发,走n步,第i步走的距离为i,每一步都必须转向90度。有k个障碍物,不能穿过。给出步数和障碍物位置,问有多少种可行路径。 输入有负数,但仍然可以使用数组,将g[maxn][maxn]作为原点。(x,y)用g[maxn+x][maxn+y]表示。 进行DFS,注意是否有障碍物,当剩下的步数走不回原点时,回溯。

wcr1996的专栏 1725

Golygons UVA - 225 dfs回溯 坐标平移

一道很简单的题目,但是写的时候莫名奇妙小错误不断很坑爹 用sum前缀和  相减表示最小步数剪枝 同时  可以自交的意思是路线上可以相交,但是不可以停在同一个点 这有点坑爹啊 因为有负坐标 把负的全部映射成正的 大于 (1+n)*n/2的一半的肯定返回不了了,这种障碍点可以直接去掉不用管 #include&lt;bits/stdc++.h&gt; using namespace std; con...

Bug___Maker的博客 324

UVA 225 Golygons (暴力+回溯+dfs)

题意:一个人从(0,0)开始,每次走的长度是1,2,3...,每次走完一段,就必须向左或向右转,停留的点不能重复,并且不能经过障碍物;现在给出最后一步走多远,以及障碍物的位置,求最后又走回(0,0)点的方法有几种,输出每种走法,还有走法总数;代码:#include &lt;map&gt; #include &lt;set&gt; #include &lt;cmath&gt; #include &l...

Insist_77的博客 327

UVA225 Golygons 黄金图形(dfs+回溯)

剪枝1:在同一个维度上的点具有相同的奇偶性,如果奇数数量只有奇数个那么一定不能返回原点。 剪枝2:当前位置怎么也走不回去。 3:沿途判断障碍即可。 在oj上提交0.347s,最快的0.012s,应该有更好的做法。 #include<bits/stdc++.h> const char *bin = "ensw"; const int dx[] = {1,0, 0,...

weixin_34143774的博客 155

紫书第七章 暴力求解

B . Golygons(UVA 225 暴力搜索) Imagine a country whose cities have all their streets laid out in a regular grid. Now suppose that a tourist with an obsession for geometry is planning expeditions to several such cities. Starting each expedition from the central

weixin_55207407的博客 171

uva225—Golygons(回溯法)

uva225 题意:

zhiyuanjiang的博客 454

UVa 225 黄金图形(Golygons)

题目:

Inuyasha__的博客 285
上一篇: UVA 669 Defragment(dfs)
下一篇: UVa 1523 Helicopter(全排列)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值