欢迎光临
我们一直在努力

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;

   

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。