更多“组合的生成(1..n中选取k个数的所有方案)procedure solve(dep,pre:integer);vari:integer; ”相关问题
  • 第1题:

    D. 冒泡排序

    procedure bubble_sort;

    var i,j,k:integer;


    正确答案:

     

    begin
    for i:=1 to n-1 do
    for j:=n downto i+1 do
    if a[j]<a[j-1] then swap( a[j],a[j-1]); {每次比较相邻元素的关系}
    end;

  • 第2题:

    已知前序中序求后序

    procedure Solve(pre,mid:string);

    var i:integer;


    正确答案:

     

    begin
    if (pre='''') or (mid='''') then exit;
    i:=pos(pre[1],mid);
    solve(copy(pre,2,i),copy(mid,1,i-1));
    solve(copy(pre,i+1,length(pre)-i),copy(mid,i+1,length(mid)-i));
    post:=post+pre[1]; {加上根,递归结束后post即为后序遍历}
    end;

  • 第3题:

    排列的生成:(1..n)

    procedure solve(dep:integer);

    var

    i:integer;


    正确答案:

     

    begin
    if dep=n+1 then begin writeln(s);exit; end;
    for i:=1 to n do
    if not used[i] then begin
    s:=s+chr(i+ord(''0''));used[i]:=true;
    solve(dep+1);
    s:=copy(s,1,length(s)-1); used[i]:=false;
    end;
    end;

  • 第4题:

    高精度减法

    procedure substract(a,b:hp;var c:hp);

    var i,len:integer;


    正确答案:

     

    begin
    fillchar(c,sizeof(c),0);
    if a[0]>b[0] then len:=a[0] else len:=b[0];
    for i:=1 to len do begin
    inc(c[i],a[i]-b[i]);
    if c[i]<0 then begin inc(c[i],10);dec(c[i+1]); end;
    while (len>1) and (c[len]=0) do dec(len);
    c[0]:=len;
    end;

  • 第5题:

    已知中序后序求前序

    procedure Solve(mid,post:string);

    var i:integer;


    正确答案:

     

    begin
    if (mid='''') or (post='''') then exit;
    i:=pos(post[length(post)],mid);
    pre:=pre+post[length(post)]; {加上根,递归结束后pre即为前序遍历}
    solve(copy(mid,1,I-1),copy(post,1,I-1));
    solve(copy(mid,I+1,length(mid)-I),copy(post,I,length(post)-i));
    end;