• <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 閱讀(1080) 評論(0)  編輯 收藏 引用
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产亚洲一区二区| 日本亚洲色大成网站WWW久久| 综合久久给合久久狠狠狠97色| 久久精品国产精品亚洲人人| 伊人久久五月天| 久久A级毛片免费观看| 久久99国产精品二区不卡| 日本加勒比久久精品| 久久精品久久久久观看99水蜜桃| 久久精品国产亚洲AV无码偷窥| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 青青国产成人久久91网| 99久久免费国产精品| 久久精品国产亚洲AV香蕉| 精品国产青草久久久久福利| 97久久国产综合精品女不卡| 国产精品热久久毛片| 丰满少妇高潮惨叫久久久| 精品伊人久久久| 日本精品久久久久久久久免费| 2020久久精品国产免费| 久久精品一本到99热免费| 久久精品国产精品亚洲人人 | 国产一区二区精品久久岳| 久久综合九色综合网站| 伊人色综合久久天天网| 久久青青草原精品国产软件| 99国产欧美精品久久久蜜芽| 久久精品国产免费观看| 久久笫一福利免费导航| 久久天天躁狠狠躁夜夜2020老熟妇| 成人国内精品久久久久一区| 久久久久亚洲精品无码蜜桃| 久久久精品人妻一区二区三区蜜桃| 麻豆久久| 久久亚洲日韩看片无码| 日韩精品无码久久一区二区三 | 久久这里只精品99re66| 中文字幕精品无码久久久久久3D日动漫 | 狠狠色婷婷久久一区二区三区| 久久久久久精品成人免费图片|