<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    對一個算法筆試題的注解

    對一個算法筆試題的注解

    算法程序題:

        該公司筆試題就1個,要求在10分鐘內作完。

        題目如下:用1、2、2、3、4、5這六個數字,用java寫一個main函數,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。

      基本思路:
    1 把問題歸結為圖結構的遍歷問題。實際上6個數字就是六個結點,把六個結點連接成無向連通圖,對于每一個結點求這個圖形的遍歷路徑,所有結點的遍歷路徑就是最后對這6個數字的排列組合結果集。
    2 顯然這個結果集還未達到題目的要求。從以下幾個方面考慮:
      1. 3,5不能相連:實際要求這個連通圖的結點3,5之間不能連通, 可在構造圖結構時就滿足改條件,然后再遍歷圖。
      2. 不能有重復: 考慮到有兩個2,明顯會存在重復結果,可以把結果集放在TreeSet中過濾重復結果。//TreeSet用于過濾一個集合中相同的東西還真是個挺不錯的方法
      3. 4不能在第三位: 仍舊在結果集中去除滿足此條件的結果。

    采用二維數組定義圖結構,最后的代碼是:

     1package test;
     2
     3import java.util.Iterator;
     4import java.util.TreeSet;
     5
     6public class TestQuestion {
     7
     8    private String[] b = new String[] "1""2""2""3""4""5" };
     9    private int n = b.length;
    10    private boolean[] visited = new boolean[n];
    11    private int[][] a = new int[n][n];
    12    private String result = "";
    13    private TreeSet treeSet = new TreeSet();// 用于保存結果,具有過濾相同結果的作用。
    14
    15    public static void main(String[] args) {
    16        new TestQuestion().start();
    17    }

    18
    19    private void start() {
    20        // 創建合法路徑標識集合
    21        for (int i = 0; i < n; i++{
    22            for (int j = 0; j < n; j++{
    23                if (i == j) {
    24                    a[i][j] = 0;
    25                }
     else {
    26                    a[i][j] = 1;
    27                }

    28            }

    29        }

    30        a[3][5= 0;
    31        a[5][3= 0;
    32        for (int i = 0; i < n; i++{
    33            this.depthFirstSearch(i);// 深度遞歸遍歷
    34        }

    35        Iterator it = treeSet.iterator();
    36        while (it.hasNext()) {
    37            String string = (String) it.next();
    38
    39            if (string.indexOf("4"!= 2{
    40                System.out.println(string);
    41            }

    42        }

    43    }

    44
    45    /**
    46     * 深度優先遍歷
    47     * 
    48     * @param startIndex
    49     */

    50    private void depthFirstSearch(int startIndex) {
    51        // 遞歸的工作
    52        visited[startIndex] = true;// 用于標識已經走過的節點
    53        result = result + b[startIndex];// 構造結果
    54        if (result.length() == n) {
    55            treeSet.add(result);// 添加到TreeSet類型中,具有過濾相同結果的作用
    56        }

    57        // 每走到一個節點,挨個遍歷下一個節點
    58        for (int j = 0; j < n; j++{
    59            if (a[startIndex][j] == 1 && visited[j] == false{
    60                depthFirstSearch(j);// 深度遞歸遍歷
    61            }
     else {
    62                continue;
    63            }

    64        }

    65        // 遞歸的收尾工作
    66        result = result.substring(0, result.length() - 1);
    67        visited[startIndex] = false;// 取消訪問標識
    68    }

    69}

    70

    轉載于http://www.tkk7.com/ITdavid/archive/2008/02/27/182483.html


    posted on 2008-03-01 10:42 魯勝迪 閱讀(296) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導航

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲国产精品成人AV秋霞| 国产不卡免费视频| 亚洲成A人片在线观看无码不卡| 337P日本欧洲亚洲大胆精品| 操美女视频免费网站| 亚洲一级毛片在线观| 国产高清免费视频| 91亚洲性爱在线视频| 国产成人精品免费视| 亚洲午夜精品在线| 美女被cao免费看在线看网站| 亚洲一级毛片免费在线观看| 性生交片免费无码看人| 亚洲中文字幕无码av| 四虎影视精品永久免费网站| 黄色免费在线观看网址| 国产亚洲人成网站在线观看| 久久国产乱子伦精品免费午夜 | 亚洲VA成无码人在线观看天堂| 国产精品无码永久免费888| 中文字幕精品亚洲无线码一区| 中国videos性高清免费| 亚洲国产精品一区| 亚洲人成网站免费播放| 黄网站色成年片大免费高清| 亚洲精品国产精品乱码不99| 久久黄色免费网站| 国产成人亚洲综合一区| 亚洲国产V高清在线观看| 国产午夜免费高清久久影院| 亚洲成人黄色网址| 日韩免费a级在线观看| a毛片成人免费全部播放| 亚洲最大的成网4438| 在线免费观看一级毛片| 一个人看www免费高清字幕| 久久精品国产亚洲AV无码娇色| 免费大片黄在线观看yw| 一个人看的免费视频www在线高清动漫 | 久久永久免费人妻精品| 亚洲一区二区无码偷拍|