• <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>

            A Za, A Za, Fighting...

            堅信:勤能補拙

            和為n連續正數序列

            題目來源:
            http://zhedahht.blog.163.com/blog/static/25411174200732711051101/

            題目:輸入一個正數n,輸出所有和為n連續正數序列。

            例如輸入15,由于1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-54-67-8

            分析:這是網易的一道面試題。

            這道題和本面試題系列的第10有些類似。我們用兩個數smallbig分別表示序列的最小值和最大值。首先把small初始化為1big初始化為2。如果從smallbig的序列的和大于n的話,我們向右移動small,相當于從序列中去掉較小的數字。如果從smallbig的序列的和小于n的話,我們向右移動big,相當于向序列中添加big的下一個數字。一直到small等于(1+n)/2,因為序列至少要有兩個數字。

            基于這個思路,我們可以寫出如下代碼:

            void PrintContinuousSequence(int small, int big);

            /////////////////////////////////////////////////////////////////////////
            // Find continuous sequence, whose sum is n
            /////////////////////////////////////////////////////////////////////////
            void FindContinuousSequence(int n)
            {
                  if(n < 3)
                        return;

                  int small = 1; 
                  int big = 2;
                  int middle = (1 + n) / 2;
                  int sum = small + big;

                  while(small < middle)
                  {
                        // we are lucky and find the sequence
                        if(sum == n)
                              PrintContinuousSequence(small, big);

                        // if the current sum is greater than n, 
                        // move small forward
                        while(sum > n)
                        {
                              sum -= small;
                              small ++;

                              // we are lucky and find the sequence
                              if(sum == n)
                                    PrintContinuousSequence(small, big);
                        }

                        // move big forward
                        big ++;
                        sum += big;
                  }
            }

            /////////////////////////////////////////////////////////////////////////
            // Print continuous sequence between small and big
            /////////////////////////////////////////////////////////////////////////
            void PrintContinuousSequence(int small, int big)
            {
                  for(int i = small; i <= big; ++ i)
                        printf("%d ", i);

                  printf("\n");
            }



            posted on 2011-06-16 19:33 simplyzhao 閱讀(197) 評論(0)  編輯 收藏 引用 所屬分類: M_面試題集錦

            導航

            <2011年6月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            韩国三级大全久久网站| 色欲av伊人久久大香线蕉影院| 久久中文娱乐网| 久久久久亚洲AV综合波多野结衣| 久久人人爽人人爽人人片AV麻豆| 一本一本久久a久久精品综合麻豆| 97精品国产97久久久久久免费| 久久午夜电影网| 久久精品国产亚洲αv忘忧草| 99久久超碰中文字幕伊人| 久久久久99精品成人片牛牛影视 | 亚洲国产精品成人久久| 精品久久久久久亚洲| 久久久SS麻豆欧美国产日韩| 久久亚洲国产午夜精品理论片| 亚洲人成精品久久久久| 久久免费大片| 秋霞久久国产精品电影院| 蜜臀av性久久久久蜜臀aⅴ | 精品国产青草久久久久福利| 久久久久免费精品国产| 久久丫精品国产亚洲av不卡| 欧美精品九九99久久在观看| 久久99亚洲综合精品首页| 久久久无码精品亚洲日韩按摩| 国内精品久久久久影院老司| 亚洲一级Av无码毛片久久精品| 亚洲国产成人久久精品影视| 久久er99热精品一区二区| 麻豆成人久久精品二区三区免费 | 日本欧美久久久久免费播放网| 久久伊人精品一区二区三区| 国内精品伊人久久久久av一坑| 97精品伊人久久久大香线蕉| 亚洲国产成人久久综合野外| 久久中文精品无码中文字幕| 大伊人青草狠狠久久| 性做久久久久久久久浪潮| 久久伊人色| 久久人人爽人人爽人人爽| 奇米影视7777久久精品|