• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Just for i0'

            Love i0

            網易暨Topcoder之有道難題,解題和一點體會

            周末在線做網易有道難題的挑戰(zhàn)賽,三個題目分值分別為350,500,1000分,第一道題理解并寫出來,但被別人cha掉;

            第二題理解題意,算法模模糊糊,不知道怎么寫。最后時間來不及寫完。 第三題沒來得及看。

             

            第一題被cha的概率很高,說明大家對算法都存在同樣的問題,看著差不多,其實有很多邏輯的混亂。至少我的第一題后來發(fā)現的確存在思路上的問題。 教訓:寫代碼之前算法一定要想清楚,邏輯完備很重要。

             

            看了AcRush的算法,不得不佩服。另一個感受就是:當數據或者數據量發(fā)生質變時,特別注意一下兩個問題:

            1、暴力還能否解決問題 

            2、很多時候都有更好的算法來解決。

             

            下面是350分的題目和根據AcRush的代碼改寫的Java版。

             

            網易有道難題TopCoder 在線挑戰(zhàn)賽 350 分題

            Problem Statement   

            如果一個數字十進制表達時,不存在連續(xù)兩位相同,則稱之為“不重復數”。例如,105123412121 都是“不重復數”,而111001225 不是。

            給定一個long 類型數字A ,返回大于A 的最小“不重復數”。

            Definition   

            Class:UnrepeatingNumbers

            Method:getNext

            Parameters: long

            Returns:long

            Method signature: long getNext(long A)

            (be sure your method is public)

            Constraints-

            A 取值范圍是[0, 10^17] ,注意是閉區(qū)間。

            Examples

            0)  

            54

            Returns: 56

            大于54 的最小數字是55 ,但55 不是“不重復數”。下一個數字是56 ,它滿足條件。

            1)   

            10

            Returns: 12

            2)  

            9

            Returns: 10

            3)   

            98

            Returns: 101

            99 100 都不是“不重復數”,但101 是。

            4)   

            21099

            Returns: 21201

            This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

             

             一種解法:

            import java.util.Scanner;

            public class UnrepeatingNumbers {
                
                
            public static void main(String[] args) {
                 
                    UnrepeatingNumbers un
            =new UnrepeatingNumbers();
                    Scanner cin
            =new Scanner(System.in);
                    
            while(true)
                    {
                     System.out.println(un.getNext(cin.nextLong()));
                    }
                }    
                
            public  long checkAndIterate (long n)
                {
                    StringBuffer s
            =new StringBuffer(String.valueOf(n));    
                    
            for(int i=0; i+1<s.length();i++)
                    {
                        
            if(s.charAt(i)==s.charAt(i+1))
                        {
                              
            long p10=1;
                              
            for(int j=i+2; j<s.length(); j++)                  
                              {    
                                  s.setCharAt(j,
            '0');    
                                  p10
            *=10;    
                              }                     
                              n
            =Long.parseLong(s.toString())+p10;    
                             
            return n;
                        }
                    }
                     
            return -1;
                }
                
            long getNext(long A)
                {
                    A
            ++;
                    
            long     temp=1;
                    
            while(temp>0)
                        { 
                        temp
            =checkAndIterate(A);
                        
            if(temp>0) A=temp;
                        }         
                    
            return A;
                }

            }


            希望對大家有幫助。算法的本質在于效率。

            posted on 2009-06-24 17:21 for_I0 閱讀(1033) 評論(1)  編輯 收藏 引用 所屬分類: JavaACM、Topcoder 算法

            Feedback

            # re: 網易暨Topcoder之有道難題,解題和一點體會 2013-03-19 12:33 黃建

            估計與跟下40最接近的兩個整數是多少  回復  更多評論   


            av午夜福利一片免费看久久 | 久久精品国产亚洲αv忘忧草| 亚洲伊人久久综合影院| 久久天天躁夜夜躁狠狠躁2022| 久久无码专区国产精品发布| 久久午夜无码鲁丝片| 久久国产高清一区二区三区| 伊人久久大香线蕉综合Av| 久久香蕉国产线看观看乱码 | 男女久久久国产一区二区三区| 国产成人精品久久亚洲| 色综合久久无码五十路人妻| 久久er国产精品免费观看8| 久久久久无码精品国产| 亚洲一级Av无码毛片久久精品| 91精品久久久久久无码| 人妻丰满AV无码久久不卡| 亚洲精品97久久中文字幕无码| 日韩精品国产自在久久现线拍| 一本一本久久aa综合精品| 久久av免费天堂小草播放| 久久国产亚洲精品麻豆| 亚洲AV日韩AV天堂久久| 久久精品青青草原伊人| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲伊人久久精品影院| 亚洲国产综合久久天堂| 欧美伊人久久大香线蕉综合69 | 久久99精品久久久久久动态图| 欧美日韩精品久久免费| 亚洲欧美一区二区三区久久| 色婷婷狠狠久久综合五月| 久久香蕉国产线看观看猫咪?v| 国产成人久久精品麻豆一区| 久久久久国产精品| 2020最新久久久视精品爱| 国产精品99久久精品爆乳| 久久av免费天堂小草播放| 久久青青草原精品国产不卡| 亚洲国产成人精品久久久国产成人一区二区三区综 | 狠狠色综合久久久久尤物|