题意:平面上有k个障碍点。从(0,0)出发,第一次走一个单位,第二次走2个单位,····第n次走n个单位,恰好回到(0,0)点。要求只能沿着东南西北方向走,且每次必须转弯90度(不能沿一个方向继续走,也不能后退)。走出的图形可以自交但不能经过障碍点,已经访问过的点不能再访问。输入n、k(1n20,0k50)和所有障碍点的坐标,所有满足条件的移动序列(用news,表示北、东、西、南),按照字典序从小到大输出,最后输出移动序列总数。

分析:本题是一道典型的回溯题,需剪枝,当当前的坐标到原点的x和y的距离和大于可以移动的步数,剪枝。按照四个方向搜索,每次搜索都判断是否经过障碍物。访问过的点不能再访问。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<queue>
#include<iostream>
#include<vector>
#include<list>
#include<set>
using namespace std;
const int maxn = 300;
int originx = 150, originy = 150;//坐标原点
int G[maxn][maxn]; int n;
char route[maxn]; int rous;
int dy[] = { 0,1,-1,0 };
int dx[] = { 1,0,0,-1 };
char dir[] = { 'e','n','s','w' };
int vis[maxn][maxn];
void solve(int cur,int x,int y,int direction) {if (cur == n + 1) {if (x == originx && y == originy) {for (int i = 1; i <= n; i++)cout << route[i];cout << endl;rous++;}return;}if (cur > n + 1)return;for (int i = 0; i < 4; i++) {if (i == direction||i==3-direction)continue;int ddx = x + dx[i] * cur;int ddy = y + dy[i] * cur;if (vis[ddx][ddy])continue;if((n - cur)*(n + cur + 1) / 2<(abs(ddx-originx)+abs(ddy-originy)))continue;int ok = 0;int a1, a2,a;if (ddx == x) { a = x; a1 = y; a2 = ddy; }else { a = y; a1 = x; a2 = ddx; }if (a1 > a2) swap(a1, a2);for (int j = a1; j <= a2; j++) {if (ddx == x)if (G[a][j]) {ok = 1; break;}if (ddy == y)if (G[j][ddy]) {ok = 1; break;}}if (!ok) {route[cur] = dir[i];vis[ddx][ddy] = 1;solve(cur + 1, ddx, ddy, i);vis[ddx][ddy] = 0;}}
}
int main() {int kase;cin >> kase;while (kase-- > 0) {memset(G, 0, sizeof(G));memset(vis, 0, sizeof(vis));rous = 0;cin >> n;int bar,barx,bary;cin >> bar;for (int i = 0; i < bar; i++) {cin >> barx >> bary;G[barx + originx][bary + originy] = 1;}solve(1, originx, originy, -1);cout << "Found " << rous << " golygon(s)." << endl;cout << endl;}//system("pause");return 0;
}

UVA225Golygons 黄金图形相关推荐

  1. java五角星金字塔,数学和艺术的结合——黄金分割

    原标题:数学和艺术的结合--黄金分割 黄金分割我们都有所耳闻,它是数学与艺术的结合,为我们展现精确的美.那么,黄金分割在生活中有哪些应用呢? 一.五角星图形 我国的国旗.国微.军旗.军徽都采用了五角星 ...

  2. 高胜率现货黄金走势图形

    做现货黄金,如果投资者能成功发现市场的底部,收益无疑会十分可观.金价走势图中经常会见出现各种底部,楔形底.双底.圆弧底.头肩底-.虽然是三角形的底部相对更为罕见,但一旦出现,后期的涨幅通常将会超出我们 ...

  3. 现货黄金入门知识普及一:图形分析之K线理论

    K线又称阴阳线.棒线.红黑线或蜡烛线,最早起源于日本德川幕府时代的米市交易,经过二百多年的演进,现已广泛应用于证券市场的技术分析中,成为技术分析中的最基本的方法之一,从而形成了现在具有完整形式和分析理 ...

  4. “反过来”学数学:从图形到符号的思考法

    2003 年,大英议会罕见地讨论了一个焦点问题:学一元二次方程,有什么用? 故事的起因是,在一次英国教师联合会议上,一元二次方程成为了众矢之的,它被批判为"数学家强行施加给无辜的.毫无戒备的 ...

  5. ogre绘制3d图形_R语言统计与绘图:绘制饼图

    饼图也是最常见的图形之一,饼图在商业世界中无所不在,然而多数统计学家,包括相应R文档的编写者却都对它持否定态度. 相对于饼图,更推荐使用条形图或点图,因为相对于面积,人们对长度的判断更精确. 今天来学 ...

  6. 追求卓越追求完美规范学习_追求新的黄金比例

    追求卓越追求完美规范学习 The golden ratio is originally a mathematical term. But art, architecture, and design a ...

  7. for in for of区别_Python 第4课:for…in循环黄金搭档之range()函数

    乐 学 趣 学 Py ● 04:for-in循环黄金搭档之range()函数● Python趣味小百科 Python中的绘图模块为什么叫Turtle海龟,而不是cat ,dog,bird呢?原来Pyt ...

  8. cad转dxf格式文件太大_想知道DWG、DWT、DWS和DXF是什么吗?从了解4种CAD图形格式开始吧...

    原创:就说我在开发区 常用图形文件格式盘点 CAD中的图形文件格式共9种,其扩展名分别为: ❶DWG – 图形或块文件 ❷DWT – 图形样板文件 ❸DWS – 图形标准文件 ❹DXF – 图形交换文 ...

  9. Ecere SDK:用于GUI和图形的跨平台工具包

    在1997年夏天,我是实时策略(RTS)和定义这些类型的沉浸式3D /沙盒角色扮演游戏的黄金经典玩家. 在浪费了很多时间的游戏之后,我想做些更具建设性的事情. 我曾梦想过自己制作视频游戏. 前一年,我 ...

最新文章

  1. centos误删除文件如何恢复
  2. Oracle Grid Control 11g for linux安装和配置指南
  3. IE的documentMode属性
  4. 前端学习(548):node的自定义模块
  5. 六、Webpack详解学习笔记——webpack的安装、起步、配置、loader的使用、webpack中配置Vue、plugin的使用、搭建本地服务器、webpack配置的分离
  6. 司爱侠计算机英语教程第五版翻译,计算机英语教程 教学课件 作者 司爱侠 张强华 参考译文.doc...
  7. linux中如何运行html文件路径问题,Linux中如何查询运行文件的全路径的方法
  8. 力扣501. 二叉搜索树中的众数(JavaScript)
  9. 玩转linux 中间的yum 命令
  10. 记一次奇怪的debug:Tomcat部署网站每一个页面第一次打开404刷新后才正常显示...
  11. 棋牌游戏-c#实现批量修改文件后缀
  12. 微信公众号在线答题小程序系统怎么做答题游戏活动
  13. 端口镜像--锐捷交换机
  14. dnplayerext2文件夹删不掉怎么解决
  15. XPath之电影天堂数据爬取
  16. Pandas---条件筛选与组合筛选
  17. Origin 2017调整画布和图表的尺寸大小
  18. 使用电脑时经常遇到问题?来试试这四款小众的实用软件吧
  19. 【毕业设计】深度学习昆虫识别系统 - 图像识别 opencv python
  20. 个人学习笔记——庄懂的技术美术入门课(美术向)19

热门文章

  1. 缓冲池Buffer Pool
  2. 手写自己的MyBatis框架-V2.0配置文件
  3. SQLErrorCodeSQLExceptionTranslator
  4. 高仿真的类-业务逻辑注入接口
  5. HTTPS证书的申请过程
  6. 读写分离后,数据库又遇到瓶颈
  7. 三种实现分布式解决方案原理分析
  8. 函数的返回值-改造求和函数
  9. php use include区别,php use和include区别总结
  10. springboot加入com.fasterxml.jackson.core-jackson-databind依赖后报错Error creating bean with name ‘requestM