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

怎样做网站底部导航网站统计代码

怎样做网站底部导航,网站统计代码,个体户做网站,北京快三题目链接:Golygons 题目描述: 给定nnn和kkk个障碍物的坐标,你需要走nnn次,第一次走一个单位距离,第二次走二个单位距离,…,第nnn次走nnn个单位距离。走得过程中不能穿过或者到达障碍物所在的点&…

题目链接: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;
}
http://www.hkea.cn/news/45694/

相关文章:

  • 网站建设丿选择金手指15凡科建站官网
  • 可以做外国网站文章武汉企业seo推广
  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速
  • php是网站开发的语言吗企业网站的作用
  • 网站站外优化怎么做企业推广app
  • 拉趣网站是谁做的威海网站制作
  • 做宣传海报的网站百度导航2023年最新版
  • 湖南做网站 磐石网络windows优化大师官方免费
  • 制作网站的最新软件如何优化关键词的方法
  • 东莞工作招聘网最新招聘搜索 引擎优化
  • 宁波俄语网站建设免费发广告的平台有哪些
  • 郑州外贸网站建设及维护营销软件商城
  • 泉州百度关键词排名广州网站营销优化qq
  • 怎么做wep网站营销推广活动方案
  • 展示型网站php官方app下载安装
  • 嘉祥网站建设广东省自然资源厅
  • 忘记网站后台密码网站排名软件推荐
  • 怎么查公司网站有没有被收录火爆产品的推广文案
  • 绵阳网站建设 经开区网络教学平台
  • wordpress阅读量没改7个湖北seo网站推广策略
  • 网站建设成功案例方案找培训机构的平台
  • 园林绿化网站建设百度关键词优化公司
  • 个人如何建设网站网络营销方式有哪些分类
  • 北京做百度网站建设电商平台如何推广运营