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

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

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

    老妖的博客
    現(xiàn)實(shí)的中沒有幾個(gè)人能夠真為對(duì)方去死,甚至山盟海誓很快就會(huì)在金錢面前變的微不足道,這才是生活。沒有永遠(yuǎn)的愛,除了你的父母對(duì)你,當(dāng)然也就沒有永遠(yuǎn)的恨,更沒有永遠(yuǎn)的痛,時(shí)間是最好的治療大師,它會(huì)很快撫平你心靈上累累的傷痕。很多年以后你想起來時(shí),那些在你生命中洶涌來往的人群至多是個(gè)模糊的影子或者毫無意義的名字
    posts - 105,  comments - 171,  trackbacks - 0

    貼代碼不說話:

    /**
     * <br>
     * 標(biāo)題: 關(guān)于Nested Sets and Materialized Path的java實(shí)現(xiàn)<br>
     * 功能概要: <br>
     * 版權(quán): cityyouth.cn (c) 2005 <br>
     * 公司:上海城市青年網(wǎng) <br>
     * 創(chuàng)建時(shí)間:2006-1-25 <br>
     * 修改時(shí)間: <br>
     * 修改原因:<br>
     * <p>
     * path x+y bin(numer)<br>
     * <root> 1/1 1<br>
     * 1 3/2 11<br>
     * 1.1 7/4 111<br>
     * 1.1.1 15/8 1111<br>
     * 1.1.1.1 31/16 11111<br>
     * 1.2 11/8 1011<br>
     * 1.2.1 23/16 10111<br>
     * 1.3 19/16 10011<br>
     * 1.3.1 39/32 100111<br>
     * 2 3/4 011<br>
     * 2.1 7/8 0111<br>
     * 2.1.1 15/16 01111<br>
     * 2.1.2 27/32 011011<br>
     * 2.2 11/16 01011<br>
     * 2.2.1 19/32 010111<br>
     * 3 3/8 0011<br>
     * 3.1 7/16 00111<br>
     * 4 3/16 00011
     * </p>
     * 
     * 
    @author 張偉
     * 
    @version 1.0
     
    */
    public class NestedSetsUtil {
        
    public static double x_numer(double numer, double denom) {
            
    double ret_num = numer + 1;
            
    double ret_den = denom * 2;
            
    while (Math.floor(ret_num / 2== ret_num / 2) {
                ret_num 
    = ret_num / 2;
                ret_den 
    = ret_den / 2;
            }
            
    return ret_num;
        }

        
    public static double x_denom(double numer, double denom) {
            
    double ret_num;
            
    double ret_den;
            ret_num 
    = numer + 1;
            ret_den 
    = denom * 2;
            
    while (Math.floor(ret_num / 2== ret_num / 2) {
                ret_num 
    = ret_num / 2;
                ret_den 
    = ret_den / 2;
            }
            
    return ret_den;
        }

        
    public static double y_numer(double numer, double denom) {
            
    double num;
            
    double den;
            num 
    = x_numer(numer, denom);
            den 
    = x_denom(numer, denom);
            
    while (den < denom) {
                num 
    = num * 2;
                den 
    = den * 2;
            }
            num 
    = numer - num;
            
    while (Math.floor(num / 2== num / 2) {
                num 
    = num / 2;
                den 
    = den / 2;
            }
            
    return num;
        }

        
    public static double y_denom(double numer, double denom) {
            
    double num;
            
    double den;
            num 
    = x_numer(numer, denom);
            den 
    = x_denom(numer, denom);
            
    while (den < denom) {
                num 
    = num * 2;
                den 
    = den * 2;
            }
            num 
    = numer - num;
            
    while (Math.floor(num / 2== num / 2) {
                num 
    = num / 2;
                den 
    = den / 2;
            }
            
    return den;
        }

        
    public static double parent_numer(double numer, double denom) {
            
    double ret_num;
            
    double ret_den;
            
    if (numer == 3) {
                
    return Double.NaN;
            }
            ret_num 
    = (numer - 1/ 2;
            ret_den 
    = denom / 2;
            
    while (Math.floor((ret_num - 1/ 4== (ret_num - 1/ 4) {
                ret_num 
    = (ret_num + 1/ 2;
                ret_den 
    = ret_den / 2;
            }
            
    return ret_num;
        }

        
    public static double parent_denom(double numer, double denom) {
            
    double ret_num;
            
    double ret_den;
            
    if (numer == 3) {
                
    return Double.NaN;
            }
            ret_num 
    = (numer - 1/ 2;
            ret_den 
    = denom / 2;
            
    while (Math.floor((ret_num - 1/ 4== (ret_num - 1/ 4) {
                ret_num 
    = (ret_num + 1/ 2;
                ret_den 
    = ret_den / 2;
            }
            
    return ret_den;
        }

        
    public static double sibling_number(double numer, double denom) {
            
    // 修正了驗(yàn)證3/4,1/1等
            /*
             * if (numer == 3) { return Double.NaN; }
             
    */
            
    double ret_num = (numer - 1/ 2;
            
    double ret_den = denom / 2;
            
    double ret = 1;
            
    while (Math.floor((ret_num - 1/ 4== (ret_num - 1/ 4) {
                
    if (ret_num == 1 && ret_den == 1)
                    
    return ret;
                ret_num 
    = (ret_num + 1/ 2;
                ret_den 
    = ret_den / 2;
                ret 
    = ret + 1;
            }
            
    return ret;
        }

        
    private static String path_recur(double numer, double denom) {
            
    if (Double.isNaN(numer))
                
    return "";
            
    return path_recur(parent_numer(numer, denom), parent_denom(numer, denom)) + "."
                    
    + (int) sibling_number(numer, denom);

        }

        
    public static String path(double numer, double denom) {
            String result 
    = path_recur(numer, denom);
            
    if (result.length() > 0)
                
    return result.substring(1, result.length());
            
    return result;
        }

        
    public static double distance(double num1, double den1, double num2, double den2) {
            
    if (Double.isNaN(num1))
                
    return -999999;
            
    if (num1 == num2 && den1 == den2)
                
    return 0;
            
    return 1 + distance(parent_numer(num1, den1), parent_denom(num1, den1), num2, den2);
        }

        
    public static double child_numer(double num, double den, double child) {
            
    return num * Math.pow(2d, child) + 3d - Math.pow(2d, child);
        }

        
    public static double child_denom(double num, double den, double child) {
            
    return den * (double) Math.pow(2, child);
        }

        
    public static double path_numer(String path) {
            
    double num = 1;
            
    double den = 1;
            String postfix 
    = "." + path + ".";
            String sibling;

            
    while (postfix.length() > 1) {
                sibling 
    = postfix.substring(1, postfix.indexOf("."2));
                postfix 
    = postfix.substring(postfix.indexOf("."2), postfix.length()
                        
    - postfix.indexOf("."2+ 2);

                num 
    = child_numer(num, den, Integer.parseInt(sibling));
                den 
    = child_denom(num, den, Integer.parseInt(sibling));
            }
            
    return num;
        }

        
    public static double path_denom(String path) {
            
    double num;
            
    double den;
            String postfix;
            String sibling;
            num 
    = 1;
            den 
    = 1;
            postfix 
    = "." + path + ".";

            
    while (postfix.length() > 1) {
                sibling 
    = postfix.substring(1, postfix.indexOf("."2));
                postfix 
    = postfix.substring(postfix.indexOf("."2), postfix.length()
                        
    - postfix.indexOf("."2+ 2);

                num 
    = child_numer(num, den, Double.parseDouble(sibling));
                den 
    = child_denom(num, den, Double.parseDouble(sibling));
            }
            
    return den;
        }

        
    public static void main(String[] args) {
            
    // 說明5-8,19-32是39/32的x和y坐標(biāo),39/32 is the node 1.3.1
            
    // System.out.println(x_numer(39d, 32d) + "/" + x_denom(39d, 32d));
            
    // System.out.println(y_numer(39d, 32d) + "/" + y_denom(39d, 32d));
            
    // System.out.println(5d / 8d + 19d / 32d);
            
    // System.out.println(39d / 32d);

            
    // 27/32 is the node 2.1.2, 那么 7/8 is 2.1,查找父節(jié)點(diǎn)成功
            
    // System.out.println(parent_numer(27d, 32d) + "/" + parent_denom(27d,
            
    // 32d));
            
    // 開始查找那些是他的兄弟
            
    // System.out.println(sibling_number(3d, 2d));
            
    // System.out.println(sibling_number(3d, 4d));
            
    // System.out.println(sibling_number(15d,16d));
            
    // System.out.println(path_numer("1.1.7")+"/"+path_denom("1.1.7"));
            
    // 計(jì)算節(jié)點(diǎn)的路徑
            
    // System.out.println(path(15d, 16d));
            /*
             * System.out.println(distance(27d, 32d, 3d, 4d));
             * System.out.println(child_numer(3d, 2d, 3d) + "/" + child_denom(3d,
             * 2d, 3d));
             * System.out.println(path_numer("2.1.1")+"/"+path_denom("2.1.1"));
             
    */
            
    // System.out.println(".2.1.3.".substring(1,".2.1.3".indexOf(".",2)));
            
    // System.out.println(".2.1.3.".substring(".2.1.3.".indexOf(".",2),".2.1.3.".length()-".2.1.3.".indexOf(".",2)+1));
            String ss = "1.2";
            System.out.println((
    int) path_numer(ss) + "/" + (int) path_denom(ss));
            System.out.println(path(path_numer(ss), path_denom(ss)));

        }

    }
    posted on 2006-01-26 11:52 老妖 閱讀(617) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    隨筆分類(48)

    隨筆檔案(104)

    好友鏈接

    我的豆瓣

    積分與排名

    • 積分 - 221776
    • 排名 - 257

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 中文字幕亚洲综合小综合在线 | 中文字幕成人免费高清在线 | 色窝窝亚洲AV网在线观看| 国产亚洲欧美在线观看| 国产精品偷伦视频免费观看了| 亚洲AV无码成人精品区蜜桃| 亚洲av最新在线网址| 婷婷亚洲综合五月天小说| 亚洲精品午夜国产va久久| 亚洲日韩在线视频| 亚洲乱人伦中文字幕无码| 亚洲日本久久久午夜精品| 美女18毛片免费视频| 久久成人a毛片免费观看网站| 99久久综合国产精品免费| 久久久久久AV无码免费网站| 18勿入网站免费永久| 丁香花免费高清视频完整版| 四虎1515hm免费国产| 亚洲AV无码一区二区二三区软件 | 亚洲成Av人片乱码色午夜| 激情综合亚洲色婷婷五月APP| 日韩在线视精品在亚洲| 精品在线免费观看| 四虎成人免费网址在线| 免费毛片在线播放| 亚洲人成人一区二区三区| 国产成人亚洲合集青青草原精品| 日韩在线视频线视频免费网站| 免费A级毛片无码A∨中文字幕下载| 成人免费视频软件网站| 久久九九亚洲精品| 亚洲AV电影天堂男人的天堂| 免费一区二区无码东京热| 全免费a级毛片免费看无码| 亚洲成av人片在线观看无码不卡| 亚洲中文字幕久久久一区| 亚洲AV女人18毛片水真多| 99re6热视频精品免费观看| 波多野结衣一区二区免费视频| 久久久久久久亚洲Av无码|