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

            雁過無痕

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::

            《編程之美》讀書筆記102.18 數(shù)組分割

            如果直接遍歷,則至少要遍歷 Cr(n-1,2*n)次(Cr(m,n)為從n個(gè)數(shù)中取m個(gè)數(shù)的組合數(shù)),為了減少遍歷次數(shù),可以先對數(shù)組排序。再將所有可能的組合大致分成幾組,每個(gè)組的數(shù)組和也是升序的,通過不斷的分組、查找,確定上下邊界條件,最終找到所求子數(shù)組。

            如果數(shù)組各個(gè)元素均不相同,可以采用下面的算法:

            先將數(shù)組{ai}排序,并計(jì)算出各元素的總和的一半S(=Sum/2.0),(對數(shù)組的劃分時(shí),可以先選中a0,再取n-1個(gè)數(shù))。

            假設(shè)Ti=sum(a0+ai+an+2+an+3…+a2n-1) (0<i<=n+1) 則數(shù)組{Ti}也是升序。如果Tn+1<=STn+1即為所求,如果存在Ti=S,則Ti即為所求。否則,可以通過二分法找到唯一的ij使得Ti<S<Tj,(選中a0aj),記錄Ti,假設(shè)Ri=sum(a0+aj+ai+an+3+an+4…+a2n-1) (j<i<=n+2),則Tj=Rn+2,比較TiRj+1Rn+2,再對Ri進(jìn)行類似Ti的分析,找出下一個(gè)數(shù)。通過不斷的分組和查找和判斷,最終可以找到所求的n個(gè)數(shù)。

            例如:長度為8的數(shù)組:共有35種組合,對每種組合的子數(shù)組和,可以劃分到幾個(gè)區(qū)間:(下面的0123表示取a0+a1+a2+a3)

            較小值   較大值

            0123 —— 0167 (共15個(gè))

            0234 —— 0267 (共10個(gè))

            0345 —— 0367 (共6個(gè))

            0456 —— 0467 (共3個(gè))

            0567 —— 0567 (共1個(gè))

            (各個(gè)較大值不必計(jì)算,它們間必然只有一個(gè)數(shù)不同(并且這個(gè)不同的數(shù)在升序數(shù)列中的位置是連續(xù)的),查找S在哪兩個(gè)較大值之間,可以用S減去相同的數(shù)的和,得到的差去指定的范圍(不同的那個(gè)數(shù)的位置范圍)進(jìn)行二分查找。)

            由于數(shù)組是升序,數(shù)組元素各不相同,右邊的“較大值”都是升序排列且不會(huì)重復(fù)。利用數(shù)組和的一半S進(jìn)行查找,如果S02670367之間。只要記錄0267,并在適當(dāng)時(shí)候判斷該記錄是否是所求的,展開0345——03676個(gè)數(shù),

            0345 —— 0347(共3個(gè))

            0356 —— 0357(共2個(gè))

            0367 —— 0367(共1個(gè))

            再重復(fù)上述操作。

             

            posted on 2010-08-16 00:16 flyinghearts 閱讀(1171) 評論(0)  編輯 收藏 引用 所屬分類: 編程之美
            久久久久亚洲AV片无码下载蜜桃| 亚洲欧美日韩中文久久| 丁香五月综合久久激情| 国产精品日韩欧美久久综合| 亚洲国产高清精品线久久 | 国产成人久久精品区一区二区| 国产精品久久久久久久| 久久久久亚洲精品男人的天堂| 一本色道久久HEZYO无码| 久久久国产精品福利免费 | 久久无码国产| AV无码久久久久不卡网站下载| 久久亚洲中文字幕精品一区| 亚洲AV乱码久久精品蜜桃| 久久男人中文字幕资源站| 国产精品久久久久久吹潮| 久久久精品国产| 国产亚洲精午夜久久久久久| 亚洲国产精品久久久天堂| 亚洲精品综合久久| 青青青青久久精品国产| 色婷婷久久综合中文久久蜜桃av| 精品久久国产一区二区三区香蕉| 久久国产精品无码一区二区三区 | 国内精品伊人久久久久网站| 午夜人妻久久久久久久久| 久久夜色精品国产噜噜亚洲a| 精品国产综合区久久久久久| 免费观看久久精彩视频 | 久久亚洲国产成人精品无码区| 97久久国产亚洲精品超碰热| 久久人做人爽一区二区三区| 欧美激情精品久久久久久久九九九| 国产精品久久自在自线观看| 97精品久久天干天天天按摩| 无码久久精品国产亚洲Av影片| 性欧美大战久久久久久久久| 精品综合久久久久久98| 国产aⅴ激情无码久久| 老色鬼久久亚洲AV综合| 国内精品九九久久久精品|