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

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

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

    對(duì)一個(gè)算法筆試題的注解

    對(duì)一個(gè)算法筆試題的注解

    算法程序題:

        該公司筆試題就1個(gè),要求在10分鐘內(nèi)作完。

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

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

    采用二維數(shù)組定義圖結(jié)構(gòu),最后的代碼是:

     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();// 用于保存結(jié)果,具有過(guò)濾相同結(jié)果的作用。
    14
    15    public static void main(String[] args) {
    16        new TestQuestion().start();
    17    }

    18
    19    private void start() {
    20        // 創(chuàng)建合法路徑標(biāo)識(shí)集合
    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     * 深度優(yōu)先遍歷
    47     * 
    48     * @param startIndex
    49     */

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

    57        // 每走到一個(gè)節(jié)點(diǎn),挨個(gè)遍歷下一個(gè)節(jié)點(diǎn)
    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;// 取消訪問(wèn)標(biāo)識(shí)
    68    }

    69}

    70

    轉(zhuǎn)載于http://www.tkk7.com/ITdavid/archive/2008/02/27/182483.html


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


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久国产亚洲观看| 亚洲最大在线视频| 国产亚洲av片在线观看播放| 国产亚洲精品资源在线26u| 免费精品国产自产拍在线观看| 日本不卡免费新一二三区| 最新亚洲卡一卡二卡三新区 | 亚洲欧洲另类春色校园小说| 日批视频网址免费观看| 久久99亚洲综合精品首页| 日韩久久无码免费毛片软件| 狠狠综合久久综合88亚洲| 中文字幕永久免费视频| 成年女人18级毛片毛片免费观看| 免费国产在线观看老王影院| 国产99久久亚洲综合精品| 少妇亚洲免费精品| 亚洲另类视频在线观看| 免费做爰猛烈吃奶摸视频在线观看| 亚洲午夜久久久久久久久久| 秋霞人成在线观看免费视频| 亚洲国产美国国产综合一区二区| 19禁啪啪无遮挡免费网站| 亚洲伦乱亚洲h视频| 亚洲一卡2卡三卡4卡无卡下载 | 久久久久久久尹人综合网亚洲| 久久狠狠躁免费观看2020| 91嫩草亚洲精品| 免费真实播放国产乱子伦| 亚洲AV综合色区无码二区爱AV| 免费无码一区二区三区蜜桃大| 久久亚洲精品高潮综合色a片| 国产成人免费片在线观看| 亚洲av中文无码字幕色不卡| 国内精品久久久久影院免费| 日本三级在线观看免费| 又爽又高潮的BB视频免费看| 免费人成网站永久| 亚洲午夜日韩高清一区| 国产午夜精品免费一区二区三区 | 亚洲综合精品香蕉久久网97|