有i个数字,从这组数字中找出n个数字来,使其相加后等于已知数字M ,不知代码如何写?

解决方案 »

  1.   

    function TForm1.find(data,output:array of integer;M,i,n:integer):boolean;
    var
    j,k,MM:integer;
    temp:array of integer;
    begin
    Result:=false;
    setlength(temp,i);
    dec(n);
    dec(i);
    for j:=0 to i do temp[j]:=data[j];
    for j:=0 to i do
    begin
      output[n]:=temp[j];
      for k:=j+1 to i-1 do temp[k-1]:=data[k];
      mm:=M-data[j];
      if (n=0) and (mm=0) then
      begin
        Result:=true;
        exit;
      end;
      if (n>0) and (mm>0) then
      begin
        if find(temp,output,MM,i,n) then
        begin
          Result:=true;
          exit;
        end;
      end;
    end;
    end;
      

  2.   

    sorry有一点错误
    定义应该是
    function TForm1.find(var data,output:array of integer;M,i,n:integer):boolean;
    应该传递指针