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

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

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

    sunfruit[請訪問http://www.fruitres.cn]

    --我相信JAVA能走得更遠 QQ:316228067

    [原創]圖論應用--一筆畫問題

    ??? --sunfruit
    tu1_2.gif
    上圖求一筆畫的路徑,利用圖論的相關知識可以得到程序如下:

    public class OnePath {

    ??? private static int[][]
    ??????????? links = { {0,1,1,0,0,0,1,0}, {1,0,0,1,0,0,0,1}, {1,0,0,1,1,1,0,0},
    ??????????? {0,1,1,0,1,1,0,0}, {0,0,1,1,0,1,1,0}, {0,0,1,1,1,0,0,1}, {1,0,0,0,1,0,0,0}, {0,1,0,0,0,1,0,0}
    ??? };

    ??? public OnePath() {
    ??????? int sum = 0;
    ??????? //存放每個點的度
    ??????? int[] point = new int[links[0].length];
    ??????? for (int i = 0; i < links[0].length; i++) {
    ??????????? int[] templink = links[i];
    ??????????? for (int j = 0; j < links[0].length; j++) {
    ??????????????? point[i] += templink[j];
    ??????????? }
    ??????????? sum += point[i];
    ??????? }

    ??????? //計算度數是奇數點的個數,如果大于2則不能一筆畫
    ??????? int odt = 0;
    ??????? int start = -1;
    ??????? for (int i = 0; i < point.length; i++) {
    ??????????? int mod = point[i] % 2;
    ??????????? if (mod > 0) {
    ??????????????? //if(start==-1)
    ??????????????????? start = i;
    ??????????????? odt++;
    ??????????? }
    ??????? }
    ??????? if(odt>2)
    ??????? {
    ????????? System.out.println("該圖不能一筆畫");
    ????????? return;
    ??????? }
    ??????? int r = 0;
    ??????? //從一個奇數點開始計算
    ??????? int nowd=start;
    ??????? System.out.print(nowd+1);
    ??????? while (sum > 0) {
    ??????????? r=0;
    ??????????? //對于起點nowd 檢查當前的點r 是否合適
    ??????????? //links[nowd][r]==0 判斷是否有可以走的沒有用過的線路
    ??????????? //(point[r]<=1 && sum!=2) 判斷是否是最后一次,如果不是最后一次,那么避開度數是1的點
    ??????????? while (links[nowd][r]==0 || (point[r]<=1 && sum!=2)) {
    ??????????????? r++;
    ??????????? }
    ??????????? links[nowd][r]=0; //已經用過的線路
    ??????????? links[r][nowd]=0; //已經用過的線路 links[nowd][r] links[r][nowd]互為往返路線,用過1->2那么2->1也作廢了
    ??????????? sum=sum-2; //總度數減2 因為從1->2 消耗了1的度和2的度
    ??????????? point[nowd]--; //起點和終點的度都減1 1->2 那么1的度和2的度都減1
    ??????????? point[r]--; //起點和終點的度都減1 1->2 那么1的度和2的度都減1
    ??????????? nowd =r; //設置新的起點
    ??????????? System.out.print("->"+(r+1));
    ??????? }
    ??? }

    ??? public static void main(String[] args) {
    ??????? new OnePath();
    ??? }

    }

    posted on 2006-08-31 14:20 sunfruit 閱讀(953) 評論(0)  編輯  收藏 所屬分類: 數據結構


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


    網站導航:
     
    主站蜘蛛池模板: www免费黄色网| 亚洲欧洲国产精品你懂的| 亚洲婷婷第一狠人综合精品| 久久国产乱子伦精品免费不卡| 77777亚洲午夜久久多人| 一级女性全黄久久生活片免费| 又爽又高潮的BB视频免费看 | 久久精品国产免费| 久久精品国产亚洲夜色AV网站| 国产成年无码久久久免费| 亚洲va中文字幕无码久久不卡| 久久久久久成人毛片免费看| 国产V亚洲V天堂无码| 久爱免费观看在线网站| 亚洲成在人天堂一区二区| 99视频有精品视频免费观看| 亚洲日韩在线视频| 成人网站免费观看| 亚洲AV成人一区二区三区观看| 天堂亚洲免费视频| 中文字幕免费在线看电影大全| 亚洲国产精品VA在线观看麻豆 | 久久精品国产免费观看| 久久精品国产亚洲AV久| 国产免费拔擦拔擦8x| 一本到卡二卡三卡免费高| 久久久久亚洲精品美女| 日本免费一区二区在线观看| 亚洲综合国产成人丁香五月激情 | 黄页网站免费观看| 黄色一级毛片免费| 亚洲国产高清人在线| 免费观看黄网站在线播放| 无人视频免费观看免费视频 | 国产精品亚洲成在人线| 美丽的姑娘免费观看在线播放| 亚洲精华国产精华精华液网站| 在线亚洲午夜理论AV大片| 国内精品免费麻豆网站91麻豆 | 最新国产成人亚洲精品影院| 亚洲一区二区三区免费|