一直贯彻的理念就是:够用就行。

基本思路,一张图,N个节点,然后画好路径,放入图中,然后按照有向线来深度遍历,最后求最短/最长节点。完全自己从地图上最短的路线来编码的。如果是求路径也就是长度,在下面代码中的graph变量里,将List泛型改为一个聚合类,此类包含下一节点与长度,然后在排序那里排长度就行了。估计迷宫也可以这样求解。红警里面的路径求解怎么算的??难怪部队全选再移动就卡,其一,显卡运算,不停的刷屏;其二,单位移动过程中每移动一个数据点都要进行多个操作判断,记录单位坐标=》清空=》再次运算,内存资源来不及清空时,偶尔会弹出内存地址不可读,这种情况,建议,更新CPU和主板。

实例:查找A到I的最少节点路径
package ADT;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
class Node {
String ID = "";
}
public class Graph {
private static HashMap<String, List> graph = new java.util.HashMap<String, java.util.List>();
static java.util.List<Node> getShortPath(Node startN, Node endN) {
java.util.List<Node> list = graph.get(startN.ID);
java.util.List<Node> storelist = new java.util.ArrayList<Node>();
java.util.List<Node> lastlist = new java.util.ArrayList<Node>();
storelist.add(startN);
if (list == null || list.isEmpty()) {
storelist.clear();
return storelist;
}
System.out.print("查找节点:" + startN.ID + ",分别是: ");
for (Node n : list) {
System.out.print(n.ID + ">");
}
System.out.println();
for (int i = 0; i < list.size(); i++) {
Node node = list.get(i);
if (node.ID.equals(endN.ID)) {//查找到就返回
//System.out.println("开始节点:" + startN.ID + ";结束节点:" + node.ID + "==" + endN.ID);
storelist.add(endN);
return storelist;
}
java.util.List<Node> tmplist = getShortPath(node, endN);
if (lastlist.isEmpty()) {
lastlist.addAll(tmplist);
continue;
}
if (tmplist.size() <= lastlist.size()) {//在这里查找出最短路径
if (tmplist.isEmpty()) {
continue;
}
lastlist.clear();
lastlist.addAll(tmplist);//堆栈可替换
}
}
storelist.addAll(lastlist);
return storelist;
}
static void insertNode(Node ver, Node sun) {
if (graph.get(ver.ID) == null) {
//如果没有节点情况,于是乎插入节点
//System.out.println("插入节点:" + ver.ID + ">" + sun.ID);
java.util.List<Node> nodes = new java.util.ArrayList<Node>();
nodes.add(sun);
graph.put(ver.ID, nodes);
return;
}
java.util.List<Node> ls = graph.get(ver.ID);
ls.add(sun);
System.out.println("插入节点:" + ver.ID + ">" + sun.ID);
graph.put(ver.ID, ls);
return;
}
public static void main(String str[]) throws Exception {
//存放数据
Node na = new Node();
Node nb = new Node();
Node nc = new Node();
Node nd = new Node();
Node ne = new Node();
Node nf = new Node();
Node ng = new Node();
Node nh = new Node();
Node ni = new Node();
na.ID = "A";
nb.ID = "B";
nc.ID = "C";
nd.ID = "D";
ne.ID = "E";
nf.ID = "F";
ng.ID = "G";
nh.ID = "H";
ni.ID = "I";
//insertNode(na, null);
insertNode(na, ng);
insertNode(na, nb);
insertNode(nb, nc);
insertNode(nb, nd);
insertNode(nc, ng);
insertNode(nc, nf);
insertNode(nd, ne);
insertNode(ne, nc);
insertNode(nf, nh);
insertNode(ne, ni);
insertNode(nh, ni);
java.util.List<Node> list = getShortPath(na, ni);
for (Node n : list) {
System.out.print("node:" + n.ID + ">");
}
}
}
对于一个基本应用来说,可以不用考虑服务器性能问题,现在的服务器不是以前的赛扬了,需要用到算法的应用所需要的环境基本上不存在于租用空间··算法真的是程序员的神兵利器

转载于:https://blog.51cto.com/zwkpc/1080697

红警2突然崩溃思考—地图?(最短,最长节点/路径)相关推荐

  1. 红警战网地图下载 红警地图库下载 红警战网客户端地图库地图下载

    22年1月14日 ps:因战网更新平台/涉及版权等问题,本教程不再做更新,感兴趣的可以根据教程中思路自行探索 从小一直玩红警到现在断断续续12年了 最近迷上了防守地图 舞铲阶级 作者:天拿钱 自己通关 ...

  2. A* 算法详解 小时候玩过红警的进来看看,非常清晰

    今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A* . 想必大家都玩儿过对战类的游戏,读书那会儿,中午吃完饭就会跟几个好哥们儿一起来两局红警.后来升级了,玩儿星际(是不是暴露年 ...

  3. 成为红警高手的基本要素(最后修订版)

    如何提高,成为红警高手的基本要素(最后修订版)--给想提高的战友 作者:[龙虎]红缨枪 ◆ 如何提高,成为红警高手的基本要素(最后修订版)--给想提高的战友   作者:[龙虎]红缨枪 一.环境因素 1 ...

  4. 红警1开源放出源码,4K高清重制版登顶Steam畅销榜!网友:青春回来了

    大数据文摘出品 作者:笪洁琼 "Sir,yes sir." "You've got no place to hide!" "You'll be a s ...

  5. 当局者迷旁观者清红警游戏反杀局案例分析

    粉丝问我:南天可不可以低吸?我没回复: 有朋友向我感叹:股市跌的时候心情不好,涨的时候心情也不好.我没有理会. 对于这波行情走势特别上周五的大涨,我的直观感受是因为 国脉科技和南天信息的超预期,引发踏 ...

  6. 红警ol总是服务器满 可服务区显示流程,红警OL:11月27日部分服务器数据互通合服公告...

    尊敬的各位指挥官: 为了给各位指挥官提供更加优良的游戏环境,提高游戏的可玩性及互动性,< 数据互通开启时间:11月27日 4:00-8:00(数据互通期间,服务器将暂时停服,如未能按时完成,则开 ...

  7. 测试地图最短路径搜索(二):换个稍微复杂点的路径模板

    工具点此链接. 点击这里看下前面介绍的这种方案的基本原理. 测试地图最短路径搜索(一):把所有的辅助条件都铺到地图上 测试地图最短路径搜索(二):换个稍微复杂点的路径模板 测试地图最短路径搜索(三): ...

  8. jquery实现流程图绘制工具——展现红警三建造出兵操作 ——一 简介

    作为一名红警三玩家,为了提高自己的技术,我会时不时的看一些别人的录像来学习,所以想要对录像的信息进行一定的记录. 单纯用文字是很麻烦的,且不够直观,容易啰嗦. 故而我有这样一个想法: 能否用图表比较详 ...

  9. 数字调制系统工作原理_浙江红警系统马路警示灯工作原理近期行情

    ​警示灯,警示灯选型​警示灯厂家,警示灯价格​警示灯厂家,多层警示灯红警系统马路警示灯工作原理​警示灯厂,警示灯工厂红警系统马路警示灯工作原理​警示灯,警示灯选型 警示灯,警示灯选型 警示灯,警示灯选 ...

最新文章

  1. C#中Dispose和Close的区别
  2. C++在构造函数中调用构造函数
  3. 读书计划清单之碎碎念
  4. 脉冲电子围栏系统介绍_网络型脉冲电子围栏系统介绍
  5. 在Java里如何给一个日期增加一天
  6. 在哪个国家生活幸福?24秒看完联合国10年报告
  7. docker run 与docker start的区别
  8. 一位寒门博士的致谢,女友回复...
  9. 介绍 JavaScript 中的闭包、局部变量(局部作用域)和私有变量等内容
  10. 禁止选择,右键菜单,拷贝,拖拽
  11. python PIL生成字母验证图片
  12. 知名歌手凌晨跳楼自杀:他为什么要走上绝路
  13. 神经网络中的单层神经网络
  14. DDOS hulk,rudy
  15. 支持人脸识别的相册PhotoPrism
  16. 习题3.3 506寝室小组
  17. java 填充字符串_Java字符串右补齐——String.format
  18. python脱离环境运行_python 生成exe脱离python环境运行
  19. Linux x8664汇编,xorl%eax,g86生成的x86_64汇编代码中的%eax
  20. SMG、东方明珠新媒体战略推进一周年;百度营销联合多品牌方举办开放麦;驭势科技推出自动驾驶新产品UiBox | 全球TMT...

热门文章

  1. 特斯拉又熬过破产危机后,马斯克说自动驾驶芯片已经准备好了
  2. 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换
  3. 全球最大地标识别数据集问世:包含200万张图片和3万处地标
  4. 路人实拍Waymo无人车:行为诡异,谨慎到让人怀疑人生
  5. cygwin 解决 乱码问题 (转)
  6. XUtils BitmapUtils 改造以加入drawable支持
  7. sql入门基础知识分享
  8. django 钉钉扫码登录
  9. Linux系统的账号管理
  10. redis介绍、主从配置