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

            堅(jiān)信:勤能補(bǔ)拙

            和為n連續(xù)正數(shù)序列

            題目來(lái)源:
            http://zhedahht.blog.163.com/blog/static/25411174200732711051101/

            題目:輸入一個(gè)正數(shù)n,輸出所有和為n連續(xù)正數(shù)序列。

            例如輸入15,由于1+2+3+4+5=4+5+6=7+8=15,所以輸出3個(gè)連續(xù)序列1-5、4-67-8

            分析:這是網(wǎng)易的一道面試題。

            這道題和本面試題系列的第10有些類(lèi)似。我們用兩個(gè)數(shù)smallbig分別表示序列的最小值和最大值。首先把small初始化為1,big初始化為2。如果從smallbig的序列的和大于n的話,我們向右移動(dòng)small,相當(dāng)于從序列中去掉較小的數(shù)字。如果從smallbig的序列的和小于n的話,我們向右移動(dòng)big,相當(dāng)于向序列中添加big的下一個(gè)數(shù)字。一直到small等于(1+n)/2,因?yàn)樾蛄兄辽僖袃蓚€(gè)數(shù)字。

            基于這個(gè)思路,我們可以寫(xiě)出如下代碼:

            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 閱讀(204) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): M_面試題集錦

            導(dǎo)航

            <2011年9月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類(lèi)

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            欧美午夜精品久久久久免费视| 欧美va久久久噜噜噜久久| 精品综合久久久久久88小说 | 伊人久久五月天| 手机看片久久高清国产日韩| 久久www免费人成看片| 999久久久免费国产精品播放| 伊人色综合久久天天人守人婷| 精品久久久久久无码中文字幕一区| 久久精品国产一区二区| 7777精品久久久大香线蕉| 国产精品久久久久久久午夜片 | 东京热TOKYO综合久久精品| 国产精品青草久久久久福利99| 久久国语露脸国产精品电影| 久久精品国产亚洲Aⅴ香蕉 | 久久国产色AV免费看| 亚洲国产成人久久综合一区77| 久久婷婷综合中文字幕| 天堂久久天堂AV色综合| 亚洲国产成人久久精品99 | 国产A三级久久精品| 看全色黄大色大片免费久久久| 久久青草国产精品一区| 久久亚洲国产成人精品性色| 久久精品人人做人人爽电影| 中文成人久久久久影院免费观看| 国产免费福利体检区久久| 久久精品国产免费| 91秦先生久久久久久久| 777米奇久久最新地址| 国内精品久久久久影院一蜜桃| 久久91精品国产91| 97精品伊人久久久大香线蕉| 亚洲中文字幕无码久久2020| 中文字幕久久久久人妻| 久久午夜无码鲁丝片| 777米奇久久最新地址| 久久香蕉一级毛片| 日本精品久久久久中文字幕| 久久99精品久久久久久秒播|