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

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

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

    piliskys

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      25 隨筆 :: 0 文章 :: 40 評論 :: 0 Trackbacks

    今天在網(wǎng)上看到一個{找跳馬最短路徑的算法} Find shortest way of a Chinese chess horse that jump from (0, 0) to (m, n) in a grid area of m*n, and output the step number and way points. For example, in a grid area of (3 * 2), a horse can jump as (0, 0)->(1, 2)->(2, 0)->(3,2). And step number is 3. 感覺在一個m*n的矩陣中跳要考慮邊界問題,在此用java寫了一下,沒有考慮邊界,以下程序只在無限二維中成立
    代碼如下

    /**
    ?*?
    @author ?:?<a?href="piliskys@163.com">piliskys</a>
    ?*?Date:?2006-2-22
    ?*?Time:?13:50:56
    ?*?找跳馬最短路徑的算法
    ?*?
    ?
    */

    public ? class ?HorsePro? {
    ????
    public ? static ? void ?main(String[]?arg)? {
    ????????HorsePosition?start?
    = ? new ?HorsePosition( 0 ,? 0 );
    ????????HorsePosition?end?
    = ? new ?HorsePosition( 0 , 1 );
    ????????
    int ?index = 0 ;
    ????????
    while ?( true )? {
    ???????????????index
    ++ ;
    ????????????HorsePosition?her?
    = ?getNext(start,?end);
    ????????????
    if ?(her.positionX? == ? 0 ? && ?her.positionY? == ? 0 || index == 7 )
    ????????????????
    break ;
    ????????????start?
    = ? new ?HorsePosition(start.positionX? + ?her.positionX,?start.positionY? + ?her.positionY);
    ????????????System.out.println(
    " 第[ " + index + " ]步=> " + start);
    ????????}

    ????}

    ??????
    /** ? */ /**
    ???????*?以下為構(gòu)造一個位置類
    ???????
    */

    ????
    static ? class ?HorsePosition? {
    ????????HorsePosition(
    int ?a,? int ?b)? {
    ????????????
    this .positionX? = ?a;
    ????????????
    this .positionY? = ?b;
    ????????}

    ????????
    int ?positionX;
    ????????
    int ?positionY;
    ????????
    public ?String?toString()? {
    ????????????
    return ? " [ " ? + ? this .positionX? + ? " , " ? + ? this .positionY? + ? " ] " ;
    ????????}

    ????}


    ????
    public ? static ?HorsePosition?getNext(HorsePosition?a,?HorsePosition?b)? {
    ????????
    int ?x,?y,?z;
    ????????x?
    = ?b.positionX? - ?a.positionX;
    ????????y?
    = ?b.positionY? - ?a.positionY;
    ????????z?
    = ?Math.abs(x)? + ?Math.abs(y);
    ????????
    if ?(z? >= ? 3 )? {
    ????????????
    if ?(Math.abs(x)? > ?Math.abs(y))? {
    ????????????????
    int ?yy;
    ????????????????
    if ?(y? == ? 0 )??yy? = ? 1 ;
    ????????????????
    else
    ????????????????????yy?
    = ?y? / ?Math.abs(y);

    ????????????????
    return ?( new ?HorsePosition( 2 ? * ?x? / ?Math.abs(x),?yy));

    ????????????}
    ? else
    ????????????
    {
    ????????????????
    int ?xx;
    ????????????????
    if ?(x? == ? 0 )??xx? = ? 1 ;
    ????????????????
    else
    ????????????????????xx?
    = ?x? / ?Math.abs(x);
    ????????????????
    return ?( new ?HorsePosition(xx,? 2 ? * ?y? / ?Math.abs(y)));
    ????????????}

    ????????}
    ? else
    ?????????
    if ?(z? == ? 2 ) {

    ????????????
    if (x == 0 ) {
    ????????????????
    return ???? new ?HorsePosition( 2 ,y / 2 ?);
    ????????????}

    ????????????
    if (y == 0 ) {
    ????????????????
    return ???? new ?HorsePosition(x / 2 , 1 ?);
    ????????????}

    ??????????
    if (x * y != 0 ) {
    ?????????????
    return ???? new ?HorsePosition( 2 * x, - y?);
    ??????????}

    ?????????}

    ?????????
    else ? if (z == 1 ) {? // 說明z==1的情況了
    ????????????? if (x == 0 ) {
    ???????????????
    return ????? new ?HorsePosition( 1 , 2 * y?);
    ?????????????}

    ?????????????
    else
    ????????
    return ????? new ?HorsePosition( 2 * x, 1 ?);
    ?????????}


    ??????
    // 以下說明完成了
    ??????? return ?? new ???HorsePosition( 0 , 0 ?);

    ????}



    }

    posted on 2006-03-20 14:36 霹靂火 閱讀(1241) 評論(0)  編輯  收藏

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 好爽…又高潮了毛片免费看| 9277手机在线视频观看免费| 一色屋成人免费精品网站| 一道本不卡免费视频| 97av免费视频| 亚洲精品成人片在线播放| 亚洲国产成人久久精品软件| 无码国产精品久久一区免费| 亚洲精品一级无码鲁丝片| 亚洲免费二区三区| 久久亚洲国产精品一区二区| 亚洲午夜久久影院| 女bbbbxxxx另类亚洲| 久久99久久成人免费播放| 国产伦精品一区二区免费| 日本人护士免费xxxx视频| 亚洲xxxxxx| 久久99九九国产免费看小说| 亚洲色一区二区三区四区 | 97久久精品亚洲中文字幕无码| 亚洲综合欧美色五月俺也去| 一个人看www在线高清免费看| 亚洲精品综合在线影院| 国产亚洲视频在线播放大全| 日韩精品极品视频在线观看免费 | 日韩在线视频免费看| 亚洲人成人77777网站不卡| 18以下岁毛片在免费播放| 亚洲精品在线免费观看| 无码精品A∨在线观看免费| 亚洲制服丝袜在线播放| 国产精品久久久久久久久免费| 中文字幕乱码亚洲无线三区| 免费国产a国产片高清网站| 免费精品视频在线| 皇色在线免费视频| 国产一级淫片视频免费看| 四虎国产精品永免费| 免费观看的毛片大全| 亚洲欧美日韩中文字幕一区二区三区 | 国产成人精品日本亚洲11|