华金矿业递归算法基础篇

这个算法不适合中间间隔基站太多的两个基站,不适合太复杂的;
不然会溢出;

package cn.com.lf;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cn.com.gj.Route;
public class Recursive {
//递归算法寻找轨迹
//1.查询数据库获取list(某个时间段某个经过的基站的集合)ll
	public static List<String> list=new ArrayList<String>(); 
	public static List<Point> point = new ArrayList<Point>();
	public static Point pp;
	public static Point pa;
	public static List<Route> ll = new ArrayList<Route>();// 最终的路线轨迹
	public static List<Route> ll1 = new ArrayList<Route>();// 最终的路线轨迹
	public static int m=0;
	public static List<String> select_num(String id, String start_time,
			String end_time) {
		SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
		String dd = sim.format(new Date());
		String sql = "select bs from yh where number=? and time BETWEEN ? and ?  order by time asc";
		String[] sz = {id, start_time, end_time };
		ResultSet rs = JdbcUtils.select(sql, sz);
		List<String> list0 = new ArrayList<String>();
		try {
			rs.last();
			int c = rs.getRow();
			int j = 0;
			rs.beforeFirst();
			if (start_time == "" || end_time == "") {
			}
			if (c == 0) {
			
			} else {
	
				while (rs.next()) {
					list0.add(rs.getString(1));
					j++;
				}
			
				list.add(list0.get(0));
				for (int i = 0; i < j; i++) {
					if (i + 1 < j) {
						if (!(list0.get(i).endsWith(list0.get(i + 1)))) {
							list.add(list0.get(i + 1));
						}
					}
				}
			}
			JdbcUtils.closeAll();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//ll就是经过的基站集合
		return list;
	}
	public static void main(String[] args) {
		
		 BufferedImage bi=new BufferedImage(800, 800, BufferedImage.TYPE_INT_RGB);
			//几何图形类新建对象----绘制图片
			 Graphics2D gh = bi.createGraphics(); 
			 List<String> lo=new ArrayList<String>();
			 lo.add("017");
			 lo.add("013");
			 /*lo.add("027");
			 lo.add("020");*/
		     crc(gh,lo);
		 	for (Route rr2 : ll) {
				System.out.println(rr2.getStarta() + ":" + rr2.getEnda() + ":"
						+ rr2.getStartb() + ":" + rr2.getEndb());
			}  
	}
	//2.循环遍历这个集合
	public static void crc(Graphics gh,List<String> list){
		//这个是取的第一个和第二个基站的;
		int sa = 0;
		int sb = 0;
		int ea = 0;
		int eb = 0;
		int sz[] = null;
		int zz[] = null;
		for (int j = 0; j < list.size() - 1; j++) {
			sz = case1(list.get(j), sa, sb);// #30的x y左边
			zz = case1(list.get(j + 1), ea, eb);// #20的x y左边
			List<Route> result= drawline(gh, sz[0], sz[1], zz[0], zz[1]);
	        List<Route> lr=RouteLine(sz[0],sz[1]);
			if (result.get(0) != null) {
				// 第一次寻找中介集合
				// 查看添加的元素是不是最后一位
				pp = new Point(sz[0], sz[1]);
				point.add(pp);
				pp = new Point(zz[0], zz[1]);
				point.add(pp);
				for (int i = 0; i < point.size() - 1; i++) {
					int x=(int) point.get(i).getX();
					int y=(int) point.get(i).getY();
					int x1=(int) point.get(i+1).getX();
					int y1=(int) point.get(i+1).getY();
					Route re = new Route(x,y , x1,y1);
					ll.add(re);
				}
				break;
			} else {
				pp = new Point(sz[0], sz[1]);
				Route rrs=null;
				Plan(gh, sz, zz,lr,rrs,pp,pa);
			}

		}
		
	
	}
	//递归函数
	// 递归函数

		public static void  Plan(Graphics gh, int sz[], int zz[],List<Route> lr,Route rrs,Point pd,Point pa) {
			// 把每一个要经过的点都放在一个集合里
			//不把初始值放两次进去
			int sa0=0;
			int sb0=0;
			m++;
			if(m==1){
				sa0=0;
				sb0=0;
			}
			Point p0=null;
			outgo:for (Route rr : lr) {	//#22 #12 #21
				if(rrs!=null){
					sa0 = rrs.getStarta();//72
					sb0 = rrs.getEnda();//281
					p0= new Point(rrs.getStartb(), rrs.getEndb());
				}
				sz[0] = rr.getStartb();//72#22
				sz[1] = rr.getEndb();//281
				if (sz[0] != sa0 || sz[1] != sb0) {
				List<Route> result0=drawline(gh, sz[0], sz[1], zz[0], zz[1]);
				List<Route> lrr=RouteLine(sz[0],sz[1]);
				if (result0.get(0) != null) {
					ll=null;
					ll=new ArrayList<Route>();
					// 第一次寻找中介集合
					// 查看添加的元素是不是最后一位
					if(rrs!=null){
						point.add(pa);
					}
					point.add(pd);
					if(rrs!=null){
						point.add(p0);
					}
					pp = new Point(sz[0], sz[1]);
					point.add(pp);
					pp = new Point(zz[0], zz[1]);
					point.add(pp);
					for (int i = 0; i < point.size() - 1; i++) {
						int x=(int) point.get(i).getX();
						int y=(int) point.get(i).getY();
						int x1=(int) point.get(i+1).getX();
						int y1=(int) point.get(i+1).getY();
						Route re = new Route(x,y,x1,y1);
						ll.add(re);
					} // for结束
					// 1.由于集合无论是否添加一个数组,大小都是1,所以需要判断第一个是不是空的就可以了
					break outgo;
					
				} // if
				else {
					ingo:for (Route rr2 : lrr) {
					Point p1 = new Point(rr.getStartb(), rr.getEndb());
					int sa1 = rr.getStarta();//337
					int sb1 = rr.getEnda();	//	281	
						sz[0] = rr2.getStartb();//71
						sz[1] = rr2.getEndb();//96
						if (sz[0] != sa1 || sz[1] != sb1) {						
							List<Route> l3 = drawline(gh, sz[0], sz[1], zz[0], zz[1]);
							List<Route> lrr1 =RouteLine(sz[0],sz[1]);
							if (l3.get(0) != null) {
								// 第一次寻找中介集合
								// 查看添加的元素是不是最后一位
								ll=null;
								ll=new ArrayList<Route>();
								if(rrs!=null){
									point.add(pa);
								}
								point.add(pd);
								point.add(p1);
								pp = new Point(sz[0], sz[1]);
								point.add(pp);
								pp = new Point(zz[0], zz[1]);
								point.add(pp);
								for (int i = 0; i < point.size() - 1; i++) {
									int x=(int) point.get(i).getX();
									int y=(int) point.get(i).getY();
									int x1=(int) point.get(i+1).getX();
									int y1=(int) point.get(i+1).getY();
									Route re = new Route(x,y,x1,y1);
									ll.add(re);
								} // for结束
								// 1.由于集合无论是否添加一个数组,大小都是1,所以需要判断第一个是不是空的就可以了
								break ingo;
							} // if
							else {
								Plan(gh, sz, zz,lrr1,rr2, p1,pd);
							}

						}
						}
					}
				}
				break outgo;
			}
		
		}
		
		
		
	//这个是以某个基站为起点,所有可能相邻基站的路线集合
		public static List<Route> drawline(Graphics gh, int sa, int sb, int ea,
				int eb) {
			List<Route> result = new ArrayList<Route>();
			// 1.1#30
			Route rr =null;
			if( sa== 71 && sb == 96 ){
				//==#22
				if(ea == 72 && eb== 281){
					gh.drawLine(71,96,72,281);
					//这个rr是放直达的路线的
					rr = new Route(sa, sb, ea, eb);	
				}
			}
			//2.#22
			if( sa== 72 && sb == 281){
				//==#30
				if(ea== 71 && eb == 96){
					gh.drawLine(72,281,71,96);	
					rr = new Route(sa, sb, ea, eb);
				}
				//==#20
				else if(ea == 337 && eb == 281){
					gh.drawLine(72,281,337,281);
				    rr = new Route(sa, sb, ea, eb);
				}
				//===#17曲线
				else if(ea == 145 && eb == 86){
					gh.drawLine(72, 281, 189, 281);// #22--(1)
					gh.drawLine( 189, 281,148, 275);// (1)----(2)
					gh.drawLine(148, 275,145, 86);// (2)--#17
				    rr = new Route(sa, sb, ea, eb);
				}
				//==#24曲线
				else if(ea == 149 && eb == 462){
					gh.drawLine(72, 281, 189, 281);// #22--(1)
					gh.drawLine( 189, 281,148, 275);// (1)----(2)
					gh.drawLine(148, 275,149, 462);// (2)--#24
				    rr = new Route(sa, sb, ea, eb);
				}
			}
			
	//3.#17
			if( sa== 145 && sb == 86){
				//3.1#17--#24直线
				if(ea== 149 && eb == 462){
					gh.drawLine(145, 86,149, 462);
				    rr = new Route(sa, sb, ea, eb);			
						}
			   //3.2#17==#22曲线
				else if(ea== 72 && eb == 281){
					gh.drawLine(145, 86,148, 275);
					gh.drawLine(148, 275,189, 281);
					gh.drawLine(189, 281,72, 281);
				    rr = new Route(sa, sb, ea, eb);			
						}
			 //3.3#17==#20曲线
				else if(ea== 337 && eb == 281){
					gh.drawLine(145,86,148,275);
					gh.drawLine(148, 275, 189, 281);
					gh.drawLine(189, 281, 337, 283);
				    rr = new Route(sa, sb, ea, eb);			
						}
			}
			//4.#20
		 if(sa== 337 && sb == 281){
				//4.1 #20==22直线
			 if(ea == 72 && eb == 281){
				gh.drawLine(337,281,72,281);
			  rr = new Route(sa, sb, ea, eb);
			}
			// 4.2 20#--12#(1)直线
			 else if(ea == 396 && eb == 282) {
					gh.drawLine(337, 281, 396, 282);
				 rr = new Route(sa, sb, ea, eb);
				}
			 //4.3#20--#21直线
			 else if(ea == 507 && eb == 286) {
					gh.drawLine(337, 281, 507, 286);
				 rr = new Route(sa, sb, ea, eb);
				}
			 //4.4 #20--#17曲线
			 else if(ea == 145 && eb == 86) {
				    gh.drawLine(145,86,148,275);
					gh.drawLine(148, 275, 189, 281);
					gh.drawLine(189, 281, 337, 283);
				 rr = new Route(sa, sb, ea, eb);
				}
			 //#4.5 20--#24
			 else if(ea == 149 && eb == 462) {
				gh.drawLine(337, 283, 189, 281);// #20--(1)
				gh.drawLine( 189, 281,148, 275);// (1)----(2)
				gh.drawLine(148, 275,149, 462);// (2)--#24
				 rr = new Route(sa, sb, ea, eb);
				}
		 }
		 //#5.#12
		 if(sa== 396 && sb == 282){
				//5.1 #12-#13直线
				 if(ea == 441 && eb == 326){
					  gh.drawLine(396,282,441,326);
					  rr = new Route(sa, sb, ea, eb);
					}	
				//5.1 #12-#20直线
				 else if(ea == 337 && eb == 281){
					  gh.drawLine(396,282,337,281);
					  rr = new Route(sa, sb, ea, eb);
					}	
		 }
		//6.#15 
		 if(sa== 580 && sb == 286){
				//6.1 #15-#21直线
				 if(ea == 507 && eb == 286){
					  gh.drawLine(580,286,507,286);
					  rr = new Route(sa, sb, ea, eb);
					}	
		 }
		 
		 //7.#28
		 if(sa== 352 && sb == 80){
				//7.1 #28-#14直线
				 if(ea == 420 && eb == 71){
					  gh.drawLine(352,80,420,71);
					  rr = new Route(sa, sb, ea, eb);
					}	
		 }
		//8.#14
		 if(sa== 420 && sb == 71){
		 //8.1#14-#28直线
			 if(ea == 352 && eb == 80){
				 gh.drawLine(352,80,420,71);
				  rr = new Route(sa, sb, ea, eb);	 
			 }
		 //8.2#14-#23直线
			 else if(ea == 441 && eb == 70){
				 gh.drawLine(441,70,420,71);
				  rr = new Route(sa, sb, ea, eb);	 
			 } 
		 }
		 //9. #23
		 if(sa== 441 && sb == 70){
		 //9.1#23-#29直线
			 if(ea == 509 && eb == 58){
				 gh.drawLine(441,70,509,58);
				  rr = new Route(sa, sb, ea, eb);	 
			 }
		 //9.2#14-#23直线
			 else if(ea == 420 && eb == 71){
				 gh.drawLine(441,70,420,71);
				  rr = new Route(sa, sb, ea, eb);	 
			 } 
			 //9.3 #14-#39直线	 
			 else if(ea == 446 && eb == 547){
				 gh.drawLine(441,70,446,547);
				  rr = new Route(sa, sb, ea, eb);	 
			 } 
			 
		 }
		 //10  #24
		 if(sa== 149 && sb == 462){
				//10.1  #24--#17直线
				 if(ea == 145 && eb == 86){
					 gh.drawLine(149,462,145,86);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//10.2  #24--#22曲线
				 else if(ea == 72 && eb == 281){
						gh.drawLine(72, 281, 189, 281);// #22--(1)
						gh.drawLine( 189, 281,148, 275);// (1)----(2)
						gh.drawLine(148, 275,149, 462);// (2)--#24
					    rr = new Route(sa, sb, ea, eb); 
				 }
				//10.3  #24--#20曲线
				 else if(ea == 337 && eb == 281){
					 gh.drawLine(337, 283, 189, 281);// #20--(1)
						gh.drawLine( 189, 281,148, 275);// (1)----(2)
						gh.drawLine(148, 275,149, 462);// (2)--#24
						 rr = new Route(sa, sb, ea, eb); 
				 }
				//10.4  #24--#40直线
				 else if(ea == 149 && eb == 560){
					 gh.drawLine(149,462,149,560);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//10.4  #24--#27
				 else if(ea == 600 && eb == 463){
					 gh.drawLine(149,462,600,463);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
	//11.#13
		 if( sa == 441 && sb == 326){
				//11.1 #12
				 if(ea == 396 && eb == 282){ 
					 gh.drawLine(441,326,396,282);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//11.2 #19
				 else if(ea == 503 && eb == 378){ 
					 gh.drawLine(441,326,503,378);
					  rr = new Route(sa, sb, ea, eb); 
				 }
		 }
		 
		 
		 //12  #19
		 if( sa == 503 && sb == 378){
				//12.1 #13直线
				 if(ea == 441 && eb == 326){ 
					 gh.drawLine(503,378,441,326);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//12.2 #27直线
				 else if(ea == 600 && eb == 463){ 
					 gh.drawLine(503,378,600,463);
					  rr = new Route(sa, sb, ea, eb); 
				 }
		 }
		//13 #40
		 if( sa == 149 && sb == 560){
				//13.1 #24
				if(ea == 149 && eb == 462){ 
					 gh.drawLine(149,560,149,462);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
				//13.1 #31/34
				if(ea == 656 && eb == 564){ 
					 gh.drawLine(149,560,656,564);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		 }
		 //14 #39
		 if(sa == 446 && sb == 547){
		 //14.1  #23直线
				if(ea == 441 && eb == 70){ 
					 gh.drawLine(446,547,441,70);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		 //14.2  #37直线
				else if(ea == 446 && eb == 596){ 
					 gh.drawLine(446,547,446,596);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		//14.3  #38直线
				else if(ea == 736 && eb == 561){ 
					 gh.drawLine(446,547,734,561);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
			
		 }
		//15    #31/#34
		 if(sa == 656 && sb == 564){
		 //15.1 # 38直线
				if(ea == 736 && eb == 561){ 
					  gh.drawLine(656,564,736,561);
					  rr = new Route(sa, sb, ea, eb);	 
				 }		
		 //15.2 #40直线
				else if(ea == 149 && eb == 560){ 
					  gh.drawLine(656,564,149,560);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 
		 
		 //16 #27
		 if(sa == 600 && sb == 463){
				//16.1 #19直线
				if(ea == 503 && eb == 378){ 
					  gh.drawLine(600,463,503,378);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//16.2 #24直线
				else if(ea == 149 && eb == 462){ 
					 gh.drawLine(600,463,149,462);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
				//16.3 #38曲线
				else if(ea == 736 && eb == 561){ 
					 gh.drawLine(600,463,736,460);
					 gh.drawLine(736,460,736,561);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		//17  #37
		 if(sa == 446 && sb == 596){
		 //17.1 #39
				if(ea == 446 && eb == 547){ 
					  gh.drawLine(446,596,446,547);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		 //17.2 #16
				else if(ea == 444 && eb == 649){ 
					gh.drawLine(446,596,444,649);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //17.3 #25曲线
				else if(ea == 650 && eb == 601){ 
					gh.drawLine(446,596,567,591);
					gh.drawLine(567,591,650,601);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 //18 #25
		 if(sa == 650 && sb == 601){
		 //18.1 #32曲线
				 if(ea == 690 && eb == 626){ 
					gh.drawLine(650,601,739,620);
					gh.drawLine(739,620,690,626);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		 //18.2 #37曲线
				else if(ea == 446 && eb == 596){ 
					gh.drawLine(446,596,567,591);
					gh.drawLine(567,591,650,601);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 
		//19 #16
		 if(sa == 444 && sb == 649){
		 //19.1 #37直线
				if(ea == 446 && eb == 596){ 
					gh.drawLine(444,649,446,596);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //19.2 #36/26直线
				else if(ea == 549 && eb == 642){ 
					gh.drawLine(444,649,549,642);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 
		 //20 #36/26
		 if(sa == 549 && sb == 642){
		 //20.1#16直线
				 if(ea == 444 && eb == 649){ 
					gh.drawLine(549,642,444,649);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //20.2#35直线
				else if(ea == 650 && eb == 657){ 
					gh.drawLine(549,642,650,657);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 //21 #35
		 if(sa == 650 && sb == 657){
		 //21.1 #11
				 if(ea == 694 && eb == 678){ 
					gh.drawLine(650,657,694,678);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //21.2 #36/26
				else if(ea == 549 && eb == 642){ 
					gh.drawLine(650,657,549,642);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 //22   #11
		 if(sa == 694 && sb == 678){
		 //22.1 #35
				if(ea == 650 && eb == 657){ 
					gh.drawLine(694,678,650,657);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //22.2 #32
				else if(ea == 690 && eb == 626){ 
					gh.drawLine(694,678,690,626);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 //23 #32
		 if(sa == 690 && sb == 626){
		 //23.1 #11直线
				if(ea == 694 && eb == 678){ 
					gh.drawLine(690,626,694,678);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //23.1 #33直线
				else if(ea == 690 && eb == 575){ 
					gh.drawLine(690,626,690,575);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //23.1 #25曲线
				else if(ea == 650 && eb == 601){ 
					gh.drawLine(650, 603, 739, 620);
					  gh.drawLine(739, 620, 690, 626);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 }
		 
		 //24 #33		 
		 if(sa == 690 && sb == 575){
				//24.1 #32
				if(ea == 690 && eb == 626){ 
					gh.drawLine(690, 575, 690, 626);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //24.2 #38
				else if(ea == 736 && eb == 561){ 
					gh.drawLine(690, 575, 736, 561);
					  rr = new Route(sa, sb, ea, eb);	 
				 }		
		 }
		 //25  #38
		 if(sa == 736 && sb == 561){
		 //25.1 #27曲线
			if(ea == 600 && eb == 463){ 
				 gh.drawLine(600,463,736,460);
				 gh.drawLine(736,460,736,561);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //25.2 #33直线
				else if(ea == 690 && eb == 575){ 
					gh.drawLine(736, 561,690,575);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //25.3 #31/34直线
				else if(ea == 656 && eb == 564){ 
					gh.drawLine(736, 561,656,564);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
				
		 }
		 //26 #21
		 if(sa == 507 && sb == 286){
		 //26.1 #15
			if(ea == 580 && eb == 286){ 
					gh.drawLine(507, 286,580,286);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		 //26.1 #20
				else if(ea == 337 && eb == 281){ 
					gh.drawLine(507, 286,337,281);
					  rr = new Route(sa, sb, ea, eb);	 
				 }
		     }
		 //27 #29
		 if(sa == 509 && sb == 58){
		 //27.1 #23
			if(ea == 441 && eb == 70){ 
					gh.drawLine(509, 58,441,70);
					  rr = new Route(sa, sb, ea, eb);	 
				 }	
		 }
			result.add(rr);
			return result;
		}

		//这个是以某个基站为起点,所有可能相邻基站的路线集合
		public static List<Route> RouteLine(int sa, int sb){
					
			      List<Route> lr = new ArrayList<Route>();
					// 1.1#30
					if( sa== 71 && sb == 96 ){
						lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(71,96,72,281);
						 lr.add(r);
					}
				//2.#22
					if( sa== 72 && sb == 281 ){
						lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(72,281,71,96);
						 lr.add(r);
						 r=new Route(72,281,337,281);
						 lr.add(r);
						 r=new Route(72,281,145,86);
						 lr.add(r);
						 r=new Route(72,281,149,462);
						 lr.add(r);
					}	
			//3.#17
					if( sa== 145 && sb == 86){
						 lr=new ArrayList<Route>(); 
						 Route r = null;
						 r=new Route(145, 86,149, 462);
						 lr.add(r);
						 r=new Route(145, 86,337, 281);
						 lr.add(r);
						 r=new Route(145, 86,72, 281);
						 lr.add(r);
					}
					//4.#20
				 if(sa== 337 && sb == 281){
						lr=new ArrayList<Route>(); 
						Route r = null;			
					    r=new Route(337,281,72,281);
					    lr.add(r);
						r=new Route(337,281,396,282);
						lr.add(r);
						r=new Route(337,281,507,286);
						lr.add(r);
						r=new Route(337,281,145,86);
						lr.add(r);
						r=new Route(337,281,149,462);
						lr.add(r);
				 }
				 //#5.#12
				 if(sa== 396 && sb == 282){
						lr=new ArrayList<Route>(); 
						Route r = null;
						    r=new Route(396, 282, 441, 326);
							lr.add(r);
							r=new Route(396, 282, 337, 281);
							lr.add(r);	
				 }
				//6.#15 
				 if(sa== 580 && sb == 286){
						lr=new ArrayList<Route>(); 
						Route r = null;
						    r=new Route(580,286,507,286);
							lr.add(r);
				 }
				 
				 //7.#28
				 if(sa== 352 && sb == 80){
						lr=new ArrayList<Route>(); 
						Route r = null;
						    r=new Route(352,80,420,71);
							lr.add(r);
				 }
				//8.#14
				 if(sa== 420 && sb == 71){
					 lr=new ArrayList<Route>(); 
					Route r = null;
					 r=new Route(420,71,352,80);
						lr.add(r);
						 r=new Route(420,71,441,70);
							lr.add(r);
				 }
				 //9. #23
				 if(sa== 441 && sb == 70){
					 lr=new ArrayList<Route>(); 
					Route r = null;
					   r=new Route(441,70,509,58);
						lr.add(r);
						 r=new Route(441,70,420,71);
							lr.add(r);
							 r=new Route(441,70,446,547);
								lr.add(r);
				 }
				 //10  #24
				 if(sa== 149 && sb == 462){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(149,462,145,86);
							lr.add(r);
							 r=new Route(149,462,72,281);
								lr.add(r);
								 r=new Route(149,462,337,281);
									lr.add(r);
									 r=new Route(149,462,149,560);
										lr.add(r);
										 r=new Route(149,462,600,463);
											lr.add(r);
				 }
			//11.#13
				 if( sa == 441 && sb == 326){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(441,326,396,282);
							lr.add(r);
							 r=new Route(441,326,503,378);
								lr.add(r);
				 }
				 
				 
				 //12  #19
				 if( sa == 503 && sb == 378){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(503,378,441,326);
							lr.add(r);
							 r=new Route(503,378,600,463);
								lr.add(r);
				 }
				//13 #40
				 if( sa == 149 && sb == 560){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(149,560,149,462);
							lr.add(r);
							 r=new Route(149,560,656,564);
								lr.add(r);
				 }
				 //14 #39
				 if(sa == 446 && sb == 547){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(446,547,441,70);
							lr.add(r);
							 r=new Route(446,547,446,596);
								lr.add(r);
								 r=new Route(446,547,736,561);
									lr.add(r);
					
				 }
				//15    #31/#34
				 if(sa == 656 && sb == 564){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(656,564,736,561);
							lr.add(r);
							 r=new Route(656,564,149,560);
								lr.add(r);
				 }
				 
				 
				 //16 #27
				 if(sa == 600 && sb == 463){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(600,463,503,378);
							lr.add(r);
							 r=new Route(600,463,149,462);
								lr.add(r);
								 r=new Route(600,463,736,561);
									lr.add(r);
				 }
				//17  #37
				 if(sa == 446 && sb == 596){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(446,596,446,547);
							lr.add(r);
							 r=new Route(446,596,444,649);
								lr.add(r);
								r=new Route(446,596,444,649);
								lr.add(r);	
				 }
				 //18 #25
				 if(sa == 650 && sb == 601){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(650,601,690,626);
							lr.add(r);
							 r=new Route(650,601,446,596);
								lr.add(r);
				 }
				 
				//19 #16
				 if(sa == 444 && sb == 649){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(444,649,446,596);
							lr.add(r);
							 r=new Route(444,649,549,642);
								lr.add(r);
				 }
				 
				 //20 #36/26
				 if(sa == 549 && sb == 642){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(549,642,444,649);
							lr.add(r);
							 r=new Route(549,642,650,657);
								lr.add(r);
				 }
				 //21 #35
				 if(sa == 650 && sb == 657){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(650,657,694,678);
							lr.add(r);
							 r=new Route(650,657,549,642);
								lr.add(r);
				 }
				 //22   #11
				 if(sa == 694 && sb == 678){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(694,678,650,657);
							lr.add(r);
							 r=new Route(694,678,690,626);
								lr.add(r);
				 }
				 //23 #32
				 if(sa == 690 && sb == 626){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(690,626,694,678);
							lr.add(r);
							 r=new Route(690,626,690,575);
								lr.add(r);
								 r=new Route(690,626,650,601);
									lr.add(r);
				 }
				 
				 //24 #33		 
				 if(sa == 690 && sb == 575){
					 lr=new ArrayList<Route>(); 
						Route r = null;
						 r=new Route(690, 575, 690, 626);
							lr.add(r);
							 r=new Route(690, 575, 736, 561);
								lr.add(r);		
				 }
				 //25  #38
				 if(sa == 736 && sb == 561){
					 lr=new ArrayList<Route>(); 
						Route r = null;
					 r=new Route(736, 561,600,463);
						lr.add(r);
						 r=new Route(736, 561,690,575);
							lr.add(r);	
							 r=new Route(736, 561,656,564);
								lr.add(r);	
						
				 }
				 //26 #21
				 if(sa == 507 && sb == 286){
					 lr=new ArrayList<Route>(); 
						Route r = null;
					   r=new Route(507,286,580,286);
						lr.add(r);	
						 r=new Route(507,286,337,281);
							lr.add(r);	
				     }
				 //27 #29
				 if(sa == 509 && sb == 58){
					 lr=new ArrayList<Route>(); 
						Route r = null;
					   r=new Route(509, 58,441,70);
						lr.add(r);	
				 }
					return lr;
		}

	//这个专门放基站的位置的x,y轴坐标
	private static int[] case1(String a, int x, int y) {
		switch (a) {
		case "030":
			x = 71;
			y = 96;
			break;
		case "017":
			x = 145;
			y = 86;
			break;
		case "022":
			x = 72;
			y = 281;
			break;
		case "020":
			x = 337;
			y = 281;
			break;
		case "028":
			x = 352;
			y = 80;
			break;
		case "012":
			x = 396;
			y = 282;
			break;
		case "014":
			x = 420;
			y = 71;
			break;
		case "023":
			x = 441;
			y =70;
			break;
		case "029":
			x = 509;
			y = 58;
			break;
		case "013":
			x = 441;
			y = 326;
			break;
		case "019":
			x = 503;
			y = 378;
			break;
		case "027":
			x = 600;
			y = 463;
			break;
		case "024":
			x = 149;
			y = 462;
			break;
		case "040":
			x = 149;
			y = 560;
			break;
		case "038":
			x = 736;
			y = 561;
			break;
		case "033":
			x = 690;
			y = 575;
			break;
		case "015":
			x = 580;
			y = 286;
			break;
		case "039":
			x = 446;
			y = 547;
			break;
		case "037":
			x = 446;
			y = 596;
			break;
		case "031":
			x = 656;
			y = 564;
			break;
		case "034":
			x = 656;
			y = 564;
			break;
		case "036":
			x = 549;
			y = 642;
			break;
		case "026":
			x = 549;
			y = 642;
			break;
		case "011":
			x = 694;
			y = 678;
			break;
		case "016":
			x = 444;
			y = 649;
			break;
		case "032":
			x = 690;
			y = 626;
			break;
		case "021":
			x = 507;
			y = 286;
			break;
		case "035":
			x = 650;
			y = 657;
			break;
		case "025":
			x = 650;
			y = 601;
			break;
		}
		int[] sz = { x, y };
		return sz;
	}
}

缺陷:陷入死循环;

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/82936015