<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

    [原創(chuàng)]圖論應用--一筆畫問題

    ??? --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];
    ??????? }

    ??????? //計算度數(shù)是奇數(shù)點的個數(shù),如果大于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;
    ??????? //從一個奇數(shù)點開始計算
    ??????? int nowd=start;
    ??????? System.out.print(nowd+1);
    ??????? while (sum > 0) {
    ??????????? r=0;
    ??????????? //對于起點nowd 檢查當前的點r 是否合適
    ??????????? //links[nowd][r]==0 判斷是否有可以走的沒有用過的線路
    ??????????? //(point[r]<=1 && sum!=2) 判斷是否是最后一次,如果不是最后一次,那么避開度數(shù)是1的點
    ??????????? while (links[nowd][r]==0 || (point[r]<=1 && sum!=2)) {
    ??????????????? r++;
    ??????????? }
    ??????????? links[nowd][r]=0; //已經(jīng)用過的線路
    ??????????? links[r][nowd]=0; //已經(jīng)用過的線路 links[nowd][r] links[r][nowd]互為往返路線,用過1->2那么2->1也作廢了
    ??????????? sum=sum-2; //總度數(shù)減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 閱讀(944) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 国产成人一区二区三区视频免费| 69天堂人成无码麻豆免费视频| 亚洲精品无码午夜福利中文字幕| 亚洲免费精彩视频在线观看| 国产91在线|亚洲| 2048亚洲精品国产| 亚洲综合免费视频| 全黄A免费一级毛片| 亚洲视频欧洲视频| 免费一级毛片不卡在线播放| 午夜视频在线免费观看| 亚洲色偷精品一区二区三区 | 亚洲区小说区图片区QVOD| 可以免费看的卡一卡二| 久青草视频97国内免费影视| 精品亚洲AV无码一区二区| 亚洲一区二区女搞男| 在线视频免费观看www动漫| 免费h视频在线观看| 亚洲av无码日韩av无码网站冲| 亚洲AV日韩AV高潮无码专区| 日本午夜免费福利视频| 18禁美女裸体免费网站| 国产vA免费精品高清在线观看 | 成人久久免费网站| 亚洲av午夜国产精品无码中文字| 亚洲男人天堂2017| av在线亚洲欧洲日产一区二区| 国产福利视精品永久免费| APP在线免费观看视频| 香蕉视频免费在线| 77777亚洲午夜久久多喷| 亚洲国产精品第一区二区| 一级毛片直播亚洲| 免费观看一级毛片| 2020久久精品国产免费| 国产精品区免费视频| a级毛片免费观看在线| 国产精品亚洲精品爽爽| 亚洲日韩国产精品乱-久| 亚洲高清在线mv|