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

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

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

    piliskys

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

    今天在網上看到一個{找跳馬最短路徑的算法} 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);
    ????????}

    ????}

    ??????
    /** ? */ /**
    ???????*?以下為構造一個位置類
    ???????
    */

    ????
    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 霹靂火 閱讀(1240) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区电影| 色一情一乱一伦一视频免费看| 久久精品国产亚洲av日韩| 毛片基地看看成人免费| 国产大片91精品免费观看不卡| 免费国产综合视频在线看 | 97在线免费视频| 免费的一级片网站| 亚洲精品福利网站| 中出五十路免费视频| 在线看片无码永久免费aⅴ| 亚洲最大成人网色| 国内精自视频品线六区免费 | 激情小说亚洲图片| 日韩在线播放全免费| 亚洲五月综合缴情在线观看| 亚洲欧洲AV无码专区| 亚洲毛片在线免费观看| 国产亚洲婷婷香蕉久久精品| 日韩欧美亚洲国产精品字幕久久久| 久久福利资源网站免费看| 精品亚洲AV无码一区二区三区| 免费播放一区二区三区| 亚洲国产精品VA在线观看麻豆| 日本免费精品一区二区三区| 高清国语自产拍免费视频国产| 国产成人亚洲综合无| 免费看一级做a爰片久久| 亚洲国产成人精品无码区花野真一| 最近免费字幕中文大全视频 | 青青草免费在线视频| 亚洲大香人伊一本线| 中文字幕在线观看免费视频| 2020天堂在线亚洲精品专区| 国拍在线精品视频免费观看| 亚洲丰满熟女一区二区v| 无码区日韩特区永久免费系列| 亚洲国产美女精品久久久| 亚洲中文字幕第一页在线| 中国黄色免费网站| 亚洲高清视频在线|