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

东莞大岭山森林公园/seo管理工具

东莞大岭山森林公园,seo管理工具,深圳外贸建站网络推广哪家好,交易所源码说一下我在时间复杂度上的优化,总共2点 不使用类,使用int代表x,y,正副三种状态从终点走到起点,而不是从起点走到终点 解释一下为什么不用类,因为不想用,所以不用。 一个int型的数的数值长度占了31位,我通…

在这里插入图片描述
在这里插入图片描述

说一下我在时间复杂度上的优化,总共2点

  1. 不使用类,使用int代表x,y,正副三种状态
  2. 从终点走到起点,而不是从起点走到终点

解释一下为什么不用类,因为不想用,所以不用。
一个int型的数的数值长度占了31位,我通过二进制取数值的第30位判断当前节点是+还是-。如果第30位是1,那么就是+,否则就是-
坐标通过一个公式转换 y * n + x 这个公式可以将二维的数组转为一维的数组,我们每次访问二维数组,都需要先访问Array[] 然后在Array[]里找到[] ,通过下标找到对应元素,这样子等于访问了两次对象。而使用公式转换后的下标,可以省去一次访问元素的代价。
因为是最短路径,bfs每次寻找周围一圈,如果最先能得到的路径肯定是最优路径,所以选择bfs,本题使用dfs可能会比bfs慢点,因为bfs需要把每条路径的长度最后进行一个比较,输出最短的那一条,慢就慢在这里。

public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();char[][] grid = new char[n][n];scanner.nextLine(); // 吸收掉回车int startHash = 0;int endHash = 0;for (int i = 0; i < n; i++) {String[] s = scanner.nextLine().split(" ", n);for (int j = 0; j < n; j++) {char c = grid[i][j] = s[j].charAt(0);if (c == 'A') {startHash = i * n + j;} else if (c == 'B') {endHash = i * n + j;}}}/*for (char[] c : grid) {System.out.println(Arrays.toString(c));}*/boolean[] viewed = new boolean[n * n]; // bfs必备表示是否访问过的数组Queue<Integer> queue = new LinkedList<>();// 手动加入终点一圈的节点 并且viewed// 是否为正负 -> 根据 1 << 30 是否等于1决定int bx = endHash % n;int by = endHash / n;viewed[endHash] = true;if (bx + 1 < n) {int hashx1 = endHash + 1;viewed[hashx1] = true;if (checkPosNeg(bx+1,by,grid)) {hashx1 |= 1 << 30;}queue.offer(hashx1);}if (bx - 1 > -1) {int hash1x = endHash - 1;viewed[hash1x] = true;if (checkPosNeg(bx-1,by,grid)) {hash1x |= 1 << 30;}queue.offer(hash1x);}if (by + 1 < n) {int hashy1 = endHash + n;viewed[hashy1] = true;if (checkPosNeg(bx,by+1,grid)) {hashy1 |= 1 << 30;}queue.offer(hashy1);}if (by - 1 > -1) {int hash1y = endHash - n;viewed[hash1y] = true;if (checkPosNeg(bx,by-1,grid)) {hash1y |= 1 << 30;}queue.offer(hash1y);}int pathLength = 0;while (!queue.isEmpty()) {pathLength ++;int len = queue.size();for (int i = 0; i < len; i++) {int hash = queue.poll();boolean pos = (hash & (1 << 30)) > 0;if (pos) {hash &= (1 << 30) - 1;}if (hash == startHash) {System.out.println(pathLength);System.exit(0);}int x = hash % n;int y = hash / n;if (x + 1 < n && !viewed[hash+1] && (pos != (grid[y][x+1] == '+') || grid[y][x+1] == 'A')) {int hashx1 = hash + 1;viewed[hashx1] = true;if (checkPosNeg(x+1,y,grid)) {hashx1 |= 1 << 30;}queue.offer(hashx1);}if (x - 1 > -1 && !viewed[hash-1] && (pos != (grid[y][x-1] == '+') || grid[y][x-1] == 'A')) {int hash1x = hash - 1;viewed[hash1x] = true;if (checkPosNeg(x-1,y,grid)) {hash1x |= 1 << 30;}queue.offer(hash1x);}if (y + 1 < n && !viewed[hash+n] && (pos != (grid[y+1][x] == '+') || grid[y+1][x] == 'A')) {int hashy1 = hash + n;viewed[hashy1] = true;if (checkPosNeg(x,y+1,grid)) {hashy1 |= 1 << 30;}queue.offer(hashy1);}if (y - 1 > -1 && !viewed[hash-n] && (pos != (grid[y-1][x] == '+') || grid[y-1][x] == 'A')) {int hash1y = hash - n;viewed[hash1y] = true;if (checkPosNeg(x,y-1,grid)) {hash1y |= 1 << 30;}queue.offer(hash1y);}}}System.out.println(-1);}public static boolean checkPosNeg(int x, int y, char[][] grid) {return grid[y][x] == '+';}
}

自己写的测试数据:

5
A - - + -
+ + - - +
- - - + -
- - - - +
B - - + -
sout:-1

5
A - - + -
+ + - - +
- - - + -
+ - - - +
B - - + -
sout: 4
5
A - + - +
+ + - + -
- - + - +
- - + - -
B - + - +
sout: 12

http://www.jmfq.cn/news/5069917.html

相关文章:

  • 国外专门做旅行社的网站/电商运营入门基础知识
  • 有人用axure做网站/软文网官网
  • 中企建网站/搜索引擎优化师
  • 怎么用手机自己做网站/品牌广告
  • wordpress 单本小说站/百度信息流怎么投放
  • 保定学校网站建设/苏州网站建设公司排名
  • 海南网站开发公司/网站优化培训学校
  • 安徽省建设工程质量安全监督总站网站/上海百度推广电话客服
  • 保利拍卖公司网站/友点企业网站管理系统
  • 如何制作手机免费网站模板/微信营销和微博营销的本质区别
  • 百度收录网站标题/媒体推广
  • 中兴建设云南有限公司网站/百度怎么发布短视频
  • wordpress hsts/seo和sem的区别是什么?
  • 网站日志分析怎么做/商丘seo教程
  • 网站中下滑菜单怎么做/深圳推广公司推荐
  • 做网站签合同/成都网络营销搜索推广
  • 云网站后台操作手册/网站seo顾问
  • 邵阳做网站的公司/广州今日头条新闻
  • dw5怎样做网站/优化关键词软件
  • 做网站职校选什么专业/aso优化重要吗
  • 电子商务网站建设与维护总结/口碑营销
  • 龙岗网站建设公司哪家好/网站的seo如何优化
  • wordpress主题+清新/网站排名软件优化
  • wordpress安装空白/快优吧seo优化
  • 网站建设客源开发/网站设计费用明细
  • 做 网站 技术支持 抓获/朝阳区搜索优化seosem
  • 英文网站建设模板下载/网站管理和维护的主要工作有哪些
  • 工厂网站开发/网站制作出名的公司
  • 网站安全的必要性/企业网站营销实现方式
  • 自己如何建设外贸网站建站/seo搜索引擎优化师