posts - 495,  comments - 11,  trackbacks - 0


          15 = 15
          15 = 7 + 8
          15 = 4 + 5 + 6
          15 = 1 + 2 + 3 + 4 + 5

          首先考慮一般的形式,設n為被劃分的正整數,x為劃分后最小的整數,如果n有一種劃分,那么


          結果就是x,如果有兩種劃分,就是x和x x + 1, 如果有m種劃分,就是 x 、x x + 1 、 x x + 1 x + 2 、... 、x x + 1 x + 2 ... x + m - 1


          將每一個結果相加得到一個公式(i * x + i * (i - 1) / 2) = n,i為當前劃分后相加的正整數個數。


          滿足條件的劃分就是使x為正整數的所有情況。


          如上例,當i = 1時,即劃分成一個正整數時,x = 15, 當i = 2時, x = 7。


          當x = 3時,x = 4, 當x = 4時,4/9,不是正整數,因此,15不可能劃分成4個正整數相加。


          當x = 5時,x = 1。

          Java代碼

          public static int split(int n) {
          ?? int m = 0, x, t1, t2;
          ?? for (int i = 1; (t1 = i * (i - 1) / 2) < n; i++) {
          ??? t2 = (n - t1);
          ??? x = t2 / i;
          ??? if (x <= 0)
          ???? break;
          ??? if ((n - t1) % i == 0) {
          ???? System.out.print(x + " ");
          ???? for (int j = 1; j < i; j++) {
          ????? System.out.print(x + j + " ");
          ???? }
          ???? System.out.println();
          ???? m++;
          ??? }
          ?? }
          ?? return m;
          }

          posted on 2009-08-29 02:28 jadmin 閱讀(109) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 北川| 永定县| 津市市| 桃江县| 南安市| 房产| 宁强县| 乳山市| 楚雄市| 德令哈市| 枣庄市| 仁寿县| 彝良县| 新津县| 武清区| 拜城县| 米林县| 万宁市| 莱州市| 邳州市| 区。| 九龙县| 颍上县| 鄄城县| 汤原县| 娱乐| 新龙县| 溧阳市| 南丹县| 桑植县| 化隆| 江陵县| 巍山| 崇仁县| 宁南县| 丰台区| 吉林市| 内乡县| 韶关市| 个旧市| 赤水市|