资源简介
旅行商问题-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
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论