桀昊j 发表于 2018-10-22 07:29:08

pl/sql实现排列组合中组合

  procedure zuhev(n      number,
  arrvar out t_arrchar) is

  >  m   number;
  x   number := 1;
  type arrayty is table of number index by binary_integer;
  -- nlarr nlarrarty;
  -- arr arrayty;
  p    arrayty;
  a    arrayty;
  tmps varchar2(1000);
  begin
  for i in 1 .. n
  loop
  a(i) := i;
  end loop;
  for i in 1 .. n
  loop
  p(i) := i;
  end loop;
  for i in 0 .. n
  loop
  m := i;
  begin

  >  p(idx) := 1; --//取第一个元素
  while (true)
  loop
  if (p(idx) > n) then
  --//取到底了,回退
  if (idx = 1) then
  --//各种情况取完了,不能再回退了
  exit;
  end if;
  --}

  >  p(idx) := p(idx) + 1; --//替换元素
  --   }
  elsif (idx = m) then
  --//取够了,输出
  for i in 1 .. m
  loop
  tmps := tmps || to_char(a(p(i)));
  end loop;
  arrvar(x) := tmps;
  tmps := null;
  p(idx) := p(idx) + 1; --//替换元素
  x := x + 1;
  else
  --{//多取一个元素

  >  p(idx) := p(idx - 1) + 1;
  --}
  end if;
  end loop;
  end;
  end loop;
  /*for i in 1 .. arrvar.count
  loop
  dbms_output.put_line(to_char(arrvar(i)));
  end loop;*/
  end;

页: [1]
查看完整版本: pl/sql实现排列组合中组合