• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0
            package BotClean;

            import java.io.*;
            import java.util.*;
            import java.text.*;
            import java.math.*;
            import java.util.regex.*;

            import java.io.*;
            import java.util.*;
            import java.text.*;
            import java.math.*;
            import java.util.regex.*;

            public class Solution2 {

                static class Status{
                    int id;//current city
                    String action;
                    int distance;
                    Vector<Integer> unvisited;
                    HashSet<Integer> visited;
                    public Status(int id)
                    {
                        this.id=id;
                    }
                }


                static class DirtyDot{
                    int id;//current city
                    int x;
                    int y;
                    
                    public DirtyDot(int id, int x, int y)
                    {
                        this.id=id;
                        this.x=x;
                        this.y=y;
                    }
                }
            /* Head ends here */
                static void next_move(int x, int y, String[] board){
                    TSP(board,x,y);
                                           
                }

            /* Tail starts here */
                public static void main(String[] args) {
                    //TSP(null,0,0);
                    
                    Scanner in = new Scanner(System.in);
                    int [] pos = new int[2];
                    String board[] = new String[5];
                    for(int i=0;i<2;i++) pos[i] = in.nextInt();
                    for(int i=0;i<5;i++) board[i] = in.next();
                    System.out.println("begin now!");
                    next_move(pos[0], pos[1], board);
                }
                

                
                public static void TSP(String[] board, int x, int y) {
                    
                    String dirty="d";
                    HashMap<Integer, DirtyDot> dirtyList=new HashMap<Integer,DirtyDot>();
                    int id=1;
                    DirtyDot tempDirtyDot2;
                    DirtyDot tempDirtyDot=new DirtyDot(id-1,x,y);
                    dirtyList.put(id,tempDirtyDot);
                    
                    for(int i=0;i<board.length;i++)
                    {
                        if(board[i].contains(dirty))
                        {
                            int position;
                            position=board[i].indexOf(dirty, 0);
                            while(position!=-1)
                            {
                                tempDirtyDot=new DirtyDot(id,i,position);
                                dirtyList.put(id,tempDirtyDot);                   
                                id++;
                                position=board[i].indexOf(dirty,position+1);
                                System.out.println("position"+position);
                            }
                        }
                    }
                    
            //        int MAX=id;
            //        int dist[][]=new int[MAX][MAX];
            //        
            //        for(int i=0;i<MAX;i++)
            //            for(int j=0;j<MAX;j++)
            //               {
            //                tempDirtyDot=dirtyList.get(i);
            //                tempDirtyDot2=dirtyList.get(j);
            //                 dist[i][j]=Math.abs(tempDirtyDot.x-tempDirtyDot2.x)+Math.abs(tempDirtyDot.y-tempDirtyDot2.y);
            //               }
                    
                      int MAX=4;
                    
                      int dist[][]={{-1,3,6,7},{2,-1,8,6},{7,3,-1,5,},{7,3,7,-1}}; 
                    
                    Vector<Status> currentStatus=new Vector<Status>();
                    Vector<Status> previousStatus;
                    /*Initialize current Status Vector*/
                    for(int i=1;i<MAX;i++)
                    {
                        Status status=new Status(i);
                        status.distance=dist[i][0];
                        status.unvisited=new Vector<Integer>();
                        status.visited=new HashSet<Integer>();
                        currentStatus.add(status);
                    }
                    System.out.println("Initialized current Status Vector");
                    //System.out.println(currentStatus.size());
                    
                    for(int j=0;j<MAX-2;j++)
                    {
                        previousStatus=currentStatus;
                        currentStatus=new  Vector<Status>();
                        //System.out.println(previousStatus.size());
                        for(int i=1;i<MAX;i++)// enumerate each node
                        {
                            for(int k=0;k<previousStatus.size();k++)
                            {
                                Status tempStatus=previousStatus.elementAt(k);
                                if(isContain(tempStatus,i)==false)//gurantee node i is not in tempStatus
                                {
                                    Status newStatus=new Status(i);
                                    newStatus.distance=tempStatus.distance+dist[i][tempStatus.id];
                                    System.out.println("id"+tempStatus.id);
                                    newStatus.visited=new HashSet<Integer>(tempStatus.visited);
                                    newStatus.unvisited=new Vector<Integer>(tempStatus.unvisited);
                                    newStatus.unvisited.add(0,(Integer)(tempStatus.id));
                                    newStatus.visited.add(tempStatus.id);
                                    currentStatus.add(newStatus);
                                    System.out.println(newStatus.unvisited.size());
                                    System.out.println(newStatus.distance);
                                    
                                }
                            }
                        }
                        //System.out.println(currentStatus.size());
                        currentStatus=optimize(currentStatus);//dp process  
                        
            //System.out.println(currentStatus.size());
                    }//end for
                    
                    Iterator<Status> iterator = currentStatus.iterator();  
               
                    Status tempStatus=iterator.next();
                    Status shortest=tempStatus;
                    int minDistance=dist[0][tempStatus.id]+tempStatus.distance;
                    System.out.println("1:"+tempStatus.distance);
                    System.out.println("2:"+dist[0][tempStatus.id]);
                    
                    while (iterator.hasNext()) {  
                         tempStatus=iterator.next();  
                         int tempDistant=dist[0][tempStatus.id]+tempStatus.distance;
                         System.out.println("11:"+tempStatus.distance);
                         System.out.println("22:"+dist[0][tempStatus.id]);
                         System.out.println("33:"+tempStatus.id);
                         
                         if(tempDistant<minDistance)
                         {
                             minDistance=tempDistant;
                             System.out.println("in loop"+minDistance);
                             //System.out.println(tempStatus.distance);
                             shortest=tempStatus;
                         }
                      }
                    
                    System.out.println("distance: "+minDistance);
                    System.out.println("size:"+shortest.unvisited.size());
                    System.out.print(" 1");
                    System.out.print(" "+shortest.id);
                    for(int i=0;i<shortest.unvisited.size();i++)
                        {
                             int tmp=shortest.unvisited.get(i)+1;
                           System.out.print(" "+tmp);
                        }
                    System.out.println(" 1");
                }
                
                private static Vector<Status> optimize(Vector<Status> cs) {
                    Status tempStatus,anotherStatus;
                    int j;

                    Iterator<Status> iterator = cs.iterator();    
                     while (iterator.hasNext()) {  
                         tempStatus=iterator.next();  
                          for(j=0;j<cs.size();j++)
                            {
                                  anotherStatus=cs.get(j);
                                  if(tempStatus.id==anotherStatus.id&&tempStatus.visited.equals(anotherStatus.visited))
                                  {
                                      if(tempStatus.distance>anotherStatus.distance)
                                      {
                                          iterator.remove();
                                         break;
                                      }
                                  }
                            }
                         
                     }    
                      return cs;
                
                }

                static boolean isContain(Status sta, int i)
                {
                    if(i==sta.id)
                        return true;
                    else
                      return sta.unvisited.contains(i);
                 }
                

            }

            posted on 2013-03-31 14:39 luis 閱讀(1075) 評論(0)  編輯 收藏 引用
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品九九久久精品女同亚洲欧美日韩综合区 | 亚洲国产精品综合久久网络| 国内精品久久久久影院优| 天堂无码久久综合东京热| 91久久成人免费| 免费精品99久久国产综合精品| 久久精品国产亚洲AV香蕉| 亚洲国产精品无码久久久蜜芽 | 一级做a爰片久久毛片看看| 国产一区二区精品久久岳| 久久国产精品久久| 999久久久免费国产精品播放| 亚洲AV无码久久精品蜜桃| 久久精品国产亚洲AV无码偷窥| 麻豆成人久久精品二区三区免费| 亚洲女久久久噜噜噜熟女| 色欲av伊人久久大香线蕉影院| 奇米影视7777久久精品| 国产精品一久久香蕉国产线看| 久久精品国产精品青草| 久久精品国产亚洲Aⅴ香蕉 | 久久九九免费高清视频| 日韩欧美亚洲综合久久影院Ds| 一本一本久久a久久精品综合麻豆| 蜜桃麻豆www久久国产精品| 亚洲va中文字幕无码久久不卡| 国产精品99精品久久免费| 久久免费国产精品一区二区| 性欧美大战久久久久久久| 久久综合给合久久狠狠狠97色69 | 久久久久久久久久免免费精品| 伊人色综合久久天天网| 成人资源影音先锋久久资源网| 国产精品伊人久久伊人电影| 波多野结衣AV无码久久一区| 久久免费精品视频| 国产一区二区久久久| 93精91精品国产综合久久香蕉| 精品久久久一二三区| 99热热久久这里只有精品68| 狠狠色噜噜色狠狠狠综合久久|