oracle max_seq_calc

DECLARE

   TYPE seq_st_tt IS TABLE OF INT;

   seq_st seq_st_tt := seq_st_tt(20,-10,-5,-3,5,4,-2,7,40);

   tmpsum INT := 0;

   maxval INT :=seq_st(1);

   spos INT := 1;

   epos INT := 1;

   nspos INT := 1;

   nepos INT := 1;

BEGIN

   FOR i IN 1..seq_st.count LOOP

      tmpsum := tmpsum + seq_st(i);

      IF(tmpsum < 0) THEN

         nspos := i + 1;

         nepos := i + 1;

         tmpsum := 0;

      ELSIF(tmpsum >= maxval) THEN

         spos := nspos;

         epos := nepos;

         nepos := nepos + 1;

         maxval := tmpsum;

      ELSE

         nepos := nepos + 1;

      END IF;

  END LOOP;

  dbms_output.put_line('the max linear sequence from '||spos||' to '||epos||' is '||maxval);

END;

   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章