zoukankan      html  css  js  c++  java
  • pl/sql实现排列组合(非递归)

    项目中有时候需要随机条件的组合来做分析,排列组合可以保证不遗漏什么条件,下面是一个用pl / sql 实现的排列组合. 

     1 procedure zuhe(n      number,
     2                    arrvar out t_arrchar) is
     3     idx number;
     4     m   number;
     5     x   number := 1;
     6     type arrayty is table of number index by binary_integer;
     7     -- nlarr nlarrarty;
     8     -- arr arrayty;
     9     p    arrayty;
    10     a    arrayty;
    11     tmps varchar2(1000);
    12   begin
    13     for i in 1 .. n
    14     loop
    15       a(i) := i;
    16     end loop;
    17     for i in 1 .. n
    18     loop
    19       p(i) := i;
    20     end loop;
    21     for i in 0 .. n
    22     loop
    23       m := i;
    24       begin
    25         idx := 1;
    26         p(idx) := 1; --//取第一个元素
    27         while (true)
    28         loop
    29           if (p(idx) > n) then
    30             --//取到底了,回退
    31             if (idx = 1) then
    32               --//各种情况取完了,不能再回退了
    33               exit;
    34             end if;
    35             --}
    36             idx := idx - 1; --;//回退到前一个
    37             p(idx) := p(idx) + 1; --//替换元素        
    38             --   }
    39           elsif (idx = m) then
    40             --//取够了,输出
    41             for i in 1 .. m
    42             loop
    43               tmps := tmps || to_char(a(p(i)));
    44             end loop;
    45             arrvar(x) := tmps;
    46             tmps := null;
    47             p(idx) := p(idx) + 1; --//替换元素    
    48             x := x + 1;
    49           else
    50             --{//多取一个元素
    51             idx := idx + 1;
    52             p(idx) := p(idx - 1) + 1;
    53             --}
    54           end if;
    55         end loop;
    56       end;
    57     end loop;
    58     /*  for i in 1 .. arrvar.count
    59     loop
    60     dbms_output.put_line(to_char(arrvar(i)));
    61     end loop;*/
    62   end;
  • 相关阅读:
    BZOJ3105-新Nim游戏
    POJ2947-Widget Factory
    POJ2248-Addition Chains
    POJ1964-City Game
    POJ2823-Sliding Window
    关于upx壳的一点认知,以及upx壳的特征识别
    易语言人脸识别算法源码
    易语言websocket客户端纯源码(无模块)
    易语言雷电模拟器批量虚拟定位源码
    易语言修改外部任意窗口标题图标源码
  • 原文地址:https://www.cnblogs.com/wangxingc/p/5181076.html
Copyright © 2011-2022 走看看