资源简介
旅行商问题-A*算法-java
代码片段和文件信息
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import javax.swing.Jframe;
public class Drawframe extends Jframe{
private Map pointMap=new HashMap();
public Drawframe(){
Container p = getContentPane();
setBounds(100 100 1000 600);
setVisible(true);
setLayout(null);
setResizable(false);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
}
public void paintCom(){
Graphics g=this.getGraphics();
Graphics2D g2 = (Graphics2D)g;
//Scanner input=new Scanner(System.in);
//0:A 1:B 2:C 3:D 4:E
//int num=input.nextInt();
int num=5;
int[][] matrix=new int[num][num];
matrix[0][1]=matrix[1][0]=6;
matrix[1][2]=matrix[2][1]=6;
matrix[0][4]=matrix[4][0]=7;
matrix[0][2]=matrix[2][0]=1;
matrix[0][3]=matrix[3][0]=5;
matrix[1][3]=matrix[3][1]=4;
matrix[1][4]=matrix[4][1]=3;
matrix[2][3]=matrix[3][2]=8;
matrix[2][4]=matrix[4][2]=2;
matrix[3][4]=matrix[4][3]=5;
int edgeNum=10;
DrawSee ds=new DrawSee(nummatrix);
ds.paintMap();
//open表
List open=new ArrayList();
//closed表
List closed=new ArrayList();
//wrong表 存放错误的路径
Set> wrong=new HashSet>();
//map表 存放每个节点的估价函数值
Map map=new HashMap();
//将A0起始节点放入map 估价函数为0
map.put(“A0“ 0);
//将A0起始节点放入open表中
open.add(“A0“);
while(true){
//从open表中取出最小估计函数值的节点,并从open表出删去
String startString=open.get(0);
open.remove(0);
//将字母形式转为数字形式,放入closed表中,层数设为下一层
char startchar=startString.charAt(0);
closed.add(startchar);
int start=startchar-‘A‘;
int floor=startString.charAt(1)-‘0‘;
if(!pointMap.containsKey(startString)){
g2.fillOval(500100*floor+1001010); //画实心圆
pointMap.put(startString new Point(500100*floor+100));
g2.setFont(new Font(“宋体“Font.BOLD20));
g2.setColor(Color.RED);
g2.drawString(startString 500+10100*floor+100);
}
floor++;
//flag表示是否在此节点的下一层中找到可以拓展的节点
boolean flag=true;
for(int i=0;i //前驱节点可以到达此节点时进行处理
if(i!=start&&matrix[i][start]!=0){
char endchar=(char) (i+‘A‘);
//如果closed中已经存在此节点则继续寻找下一节点
if(closed.contains(endchar)){
continue;
}
//closed不存在此节点则加入closed中
closed.add(endchar);
//如果加入该节点后,发现该路径存在于错误路径中,则继续寻找下一节点
if(wrong.contains(closed)){
closed.remove(closed.size()-1);
continue;
}
closed.remove(closed.size()-1);
flag=false;
String endString=endchar+String.valueOf(floor);
try{
Thread.sleep(2000);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5778 2017-03-28 00:36 Drawfr
文件 2653 2017-03-28 00:36 DrawSee.java
文件 371 2017-03-28 08:01 Main.java
- 上一篇:图形学 画线 画多边形 填充
- 下一篇:android-mail.jar
相关资源
- 企业商品销售管理系统jsp+java+sql
- 疯狂Java讲义第4版.txt
- JAVA操作串口demo和dll动态库和jar包__
- 基于java银行管理系统的设计.doc
- java基于IE内核网页浏览器
- java实现多文件异步上传
- 史上最强大的java版的银行家算法
- 双色球JAVA代码
- java 版 简单的人员信息管理系统
- 纯java代码 一个计算数学表达式的程
- Java开发工具及组件应用视频教程
- 毕业设计素材
- 购物车jsp+sql server
- javassist-3.20.0-GA.jar
- java中键盘输入 的各种实现方式
- 学生信息管理系统--java实现
- java记事本课程设计论文
- 个人日常事务管理系统java版
- java开发的公司访客系统
- 简单实现AES-CBC-MAC算法
- JAVA计算器计算器JAVA计算器计算器
- 支付宝支付接口java调用
- LTK-Java-1.0.0.6源码包(RFID电子标签读写
- java界面随机点名程序
- 简单的学生信息管理
- java课程设计-计算器-功能完整的科学
- java 学生选课系统
- java斗地主游戏源代码
- java实现多个图片生成视频流
- 郭永峰2018最新Java全套教程,百度网盘
评论
共有 条评论