我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          一道關(guān)于數(shù)組的面試題

          給定一個數(shù)組,當(dāng)中有正負(fù)數(shù),求當(dāng)中的一段“子數(shù)組”(即任意長度,連續(xù)的數(shù)字),使得這個“子數(shù)組”的和是所有“子數(shù)組”和中最大的,
          如給定的數(shù)組為12, -8, 5, 66, -21, 0 ,35, -44,7,則最大的和的子數(shù)組為{12, -8, 5, 66, -21, 0 ,35},最大的和為89.

          package org.eline.core.utils;

          /**
           * 
           * 
          @author supercrsky
           * 
           
          */

          public class Test
          {
              
          public void findMax(int s[])
              
          {
                  
          int add[] = new int[100];
                  
          int k = s[0];
                  
          int b = 0;// 標(biāo)記開始位置
                  int p = 0;// 標(biāo)記結(jié)束位置
                  int i;
                  
          int j;

                  
          for (i = 0; i <= s.length; i++)// 整體循環(huán)
                  {
                      
          for (j = i; j < s.length; j++)// 子數(shù)組循環(huán)
                      {
                          add[i] 
          += s[j];
                          
          if (add[i] > k)
                          
          {
                              k 
          = add[i];
                              b 
          = i;// 獲得開始位置下標(biāo)
                              p = j;// 獲得結(jié)束位置下標(biāo)
                          }

                      }

                  }

                  System.out.print(
          "max sub array:");
                  System.out.print(
          "{");
                  
          for (i = b; i <= p; i++)
                  
          {
                      System.out.print(s[i] 
          + " ");
                  }

                  System.out.println(
          "}");
                  System.out.print(
          "sum:" + k);
              }


              
          public static void main(String[] args)
              
          {
                  
          int s[] =
                  
          101-100100100999-222 - 100100 };
                  Test test 
          = new Test();
                  test.findMax(s);
              }

          }



          posted on 2008-05-07 17:33 々上善若水々 閱讀(1764) 評論(0)  編輯  收藏 所屬分類: Java筆試與面試

          主站蜘蛛池模板: 黄骅市| 文成县| 都安| 当涂县| 乐山市| 浪卡子县| 彰化市| 巩留县| 手机| 汨罗市| 保山市| 周宁县| 论坛| 南陵县| 雷山县| 佛坪县| 五河县| 南开区| 伊通| 沙雅县| 霍州市| 乐都县| 彝良县| 贺州市| 南康市| 丹东市| 呈贡县| 登封市| 平湖市| 小金县| 宿松县| 华宁县| 吉木乃县| 广宁县| 呼和浩特市| 清河县| 新乡县| 驻马店市| 峨眉山市| 镇安县| 鸡泽县|