资源简介
2. 对矩阵表示的无向图,判断其是否存在欧拉通路,并且判断其是否欧拉图。如果是欧拉图,则至少找出一条欧拉回路。
代码片段和文件信息
/*
Author:lxrmido
Website:buzhuanggeek.com
Edit:GVIM_073
Date:2011/09/11
*/
import javax.swing.*;
import java.util.regex.Pattern;
class hw_14_2{
private static boolean points[][];
private static int nop;
private static int stack[];
private static int cur_sp = 0;
private static StringBuilder route = new StringBuilder();
private static StringBuilder routem = new StringBuilder();
private static void push(int elem){
stack[cur_sp++] = elem;
}
private static int pop(){
return stack[--cur_sp];
}
private static boolean exist(int elem){
for(int i = 0; i < cur_sp; i++){
if(stack[i] == elem)
return true;
}
return false;
}
private static void trace(int cp){
push(cp);
boolean zombie = true;
boolean mesh = false;
for(int i = 0; i < nop; i ++){
if(points[cp][i] == true){
if(!exist(i)){
zombie = false;
trace(i);
}else if(i == stack[0]){
mesh = true;
}
}
}
if(zombie && cur_sp == nop){
if(mesh){
push(stack[0]);
addRoute(routem);
pop();
}else{
addRoute(route);
}
}
pop();
}
private static void addRoute(StringBuilder Route){
StringBuilder tmprt = new StringBuilder();
for(int i = cur_sp-1; i >= 0; i--){
tmprt.append(stack[i]);
if(i != 0)
tmprt.append(“-“);
}
tmprt.append(“\n“);
if(Route.indexOf(tmprt.toString()) < 0){
for(int i = 0; i < cur_sp; i++){
Route.append(stack[i]);
if(i != cur_sp-1)
Route.append(“-“);
}
Route.append(“\n“);
}
}
public static void main(String[] args){
String tmp = JOptionPane.showInputDialog(null “请输入无向图的结点数:“);
while(!(tmp.matches(“\\d+“))){
tmp = JOptionPane.showInputDialog(null “输入有误,请重新输入有向图的结点数:“);
}
nop = Integer.parseInt(tmp);
if(nop == 1){
JOptionPane.showMessageDialog(null “结点数为1,故此图为欧拉图,欧拉通路、回路均为 0 。“);
System.exit(0);
}
points = new boolean[nop][nop];
stack = new int[nop*2];
String tmpary[];
while((tmp = JOptionPane.showInputDialog(null “请输入无向路径,结点以数字表示以任意符号或空格分隔(如 0-1-2-3不再输入点取消:“)) != null){
boolean eftv = true;
if(!(tmp.matches(“\\d.*“))){
JOptionPane.showMessageDialog(null “含有不存在的结点,本路径无效!“);
continue;
}
Pattern p = Pattern.compile(“\\D+“);
tmpary = p.split(tmp);
for(int i = 0; i < tmpary.length; i ++){
if(Integer.parseInt(tmpary[i]) >= nop){
JOptionPane.showMessageDialog(null “含有不存在的结点,本路径无效!“);
eftv = false;
break;
}
}
if(!eftv){
eftv = true;
continue;
}
for(int i = 0; i < tmpary.length-1; i ++){
points[Integer.parseInt(tmpary[i])][Integer.parseInt(tmpary[i+1])] = true;
}
}
stack= new int[nop*2];
for(int i = 0; i < nop; i++){
push(i);
for(int j = 0; j < nop; j++){
if(points[i][j] == true){
trace(j);
}
}
pop();
}
if(route.length() > 1){
JOptionPane.showMessageDialog(null “所有欧拉通路(不含回路)为:\n“+route);
if属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3403 2011-09-23 22:31 2\hw_14_2.class
文件 3418 2011-09-11 18:39 2\hw_14_2.java
目录 0 2011-09-23 22:30 2
----------- --------- ---------- ----- ----
6821 3
相关资源
- 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实现有障碍物的贪吃蛇游戏
川公网安备 51152502000135号
评论
共有 条评论