• <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) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2012年4月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(3)

            隨筆分類(lèi)

            隨筆檔案

            文章分類(lèi)

            文章檔案

            友情鏈接

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            囯产精品久久久久久久久蜜桃| 伊人久久大香线蕉av不变影院 | 久久综合丝袜日本网| 久久99国产精品久久99果冻传媒| 91超碰碰碰碰久久久久久综合| 精品国产一区二区三区久久蜜臀| 精品久久亚洲中文无码| 国产精品99久久免费观看| 久久综合五月丁香久久激情| 亚洲中文字幕无码久久2017| 韩国三级中文字幕hd久久精品| 亚洲日本va中文字幕久久| 狠狠色综合久久久久尤物| 久久免费的精品国产V∧ | 久久婷婷五月综合97色| 国产精品丝袜久久久久久不卡| 欧美伊人久久大香线蕉综合| 91精品国产91热久久久久福利| 777午夜精品久久av蜜臀 | 久久久精品人妻一区二区三区蜜桃 | 久久久久亚洲精品天堂久久久久久| 久久AAAA片一区二区| 久久精品麻豆日日躁夜夜躁| 午夜视频久久久久一区| 99久久精品免费| 91精品国产综合久久婷婷| 亚洲精品国精品久久99热一| 女同久久| 久久精品国产精品亚洲下载| 国产欧美久久久精品| 久久精品国产亚洲AV麻豆网站 | 久久精品国产亚洲Aⅴ香蕉| 欧美亚洲色综久久精品国产| 国产成人精品综合久久久| 无码8090精品久久一区| 欧美久久综合九色综合| 久久成人18免费网站| 久久精品国产第一区二区| 国产精品丝袜久久久久久不卡| 久久久久夜夜夜精品国产| 久久久久综合网久久|