急求一个算法(200)

  • 主题发起人 主题发起人 longxh025
  • 开始时间 开始时间
L

longxh025

Unregistered / Unconfirmed
GUEST, unregistred user!
求一个算法:N个数,用其中M个任意组合相加等于一个已知数X。得出这M个数是哪些数。
 
有意思,应该可以解决。procedure TForm1.Button1Click(Sender: TObject);Const N=10; M=4; X=20;Var NumArr:array [0..N-1] Of Integer; K:Integer; Function GetNextNum(StarIndex,Count:Integer; NeedVal:Integer; LastStr:String):Boolean; Var K2:Integer; begin K2:=StarIndex; While K2<= (N-Count) Do begin if Count=1 then begin IF NumArr[K2]=NeedVal Then Begin System.Delete(LastStr,1,1); Memo1.Lines.Add( LastStr+','+IntToStr(NumArr[K2]) ); end; end else GetNextNum( K2+1, Count-1, NeedVal-NumArr[K2], LastStr+','+IntToStr(NumArr[K2]) ); Inc(K2); end; End;begin For K:=LOW(NumArr) TO High(NumArr) do NumArr[K]:=K+1; GetNextNum( 0, M, X, '');end;给分!
 
算法不符合你要求?
 
答案有點疑問
 
znxia: 得到了你的答案提示.但是你的M已指定了4個,我需要的M是個未知的數目.重新說明一下題目.例如: 數組A 有10個分別是10,20,30,40,50,60,70,80,90,100那些數加起來等于110(不可重復相加)?列出所有的這些組合?
 
后退
顶部