線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:641
推到 Plurk!
推到 Facebook!

求問一個數字有幾組可能可被哪些數字相加

尚未結案
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-22 17:59:16 IP:61.59.xxx.xxx 未訂閱
問題如主題 例 4 1. 4=4 2. 3 1=4 3. 2 2=4 4. 2 1 1=4 5. 1 1 1 1=4 共有5種組合可相加為4 不支程式該如何寫才可求出上述的問題呢?
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-22 18:04:23 IP:203.75.xxx.xxx 未訂閱
這是學校的作業吧, 請你寫出程式後, 再提出當中錯誤的地方吧 -- 把手握緊,裡面什麼也沒有 把手鬆開,你擁有的是一切
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-22 18:09:52 IP:61.59.xxx.xxx 未訂閱
不好意思,這不是學校作業,這個問題正是我目前開發的一個系統中所遇到的問題,若是有哪些高手知道,能煩請賜教,謝謝!!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-22 19:57:55 IP:211.20.xxx.xxx 未訂閱
adrain 你好
以下範例使用遞迴方式產生你要的資料,死怕無法處理太大的數值喔!
在 Form上放個TBitbtn及TMemo物件,然後在Tbitbtn.OnClick事件寫入下列程式片段即可
procedure TForm1.BitBtn3Click(Sender: TObject);
  Procedure AA(Value:Integer;Strs:TStrings);
  var
    i, j : Integer ;
    SubStrs : TStrings ;
    Str : String ;
    Seed : Integer ;
  Begin
    If Value<=1 Then Exit;
    SubStrs := TStringList.Create;
    For i := 1 To Value-1  Do Begin
      SubStrs.Clear;
      AA(Value-i,SubStrs);
      For j := 0 To SubStrs.Count-1 Do Begin
        Str := IntToStr(i) ',' SubStrs[j];
        If Strs.IndexOf(Str) = -1 Then
          Strs.Add(Str);
      End;
      Strs.Add(IntToStr(i) ',' IntToStr(Value-i));
    End;
    SubStrs.Free;
  End;
begin
  Memo1.Lines.Clear;
  AA(SpinEdit1.Value,Memo1.Lines);
end;    範例中沒檢查反向的配對是否重複,需要的話請自行加上囉!
_______________________________________ 深藍的魚,祝您好運..........連連
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-22 20:33:26 IP:210.68.xxx.xxx 未訂閱
我想這會是你要的    
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;
  SumNumber(StrToInt(Trim(Edit1.Text)), StrToInt(Trim(Edit1.Text)), Trim(Edit1.Text) '=');
end;    procedure TForm1.SumNumber(iTotal, iValue: Integer; Str: String);
var
  i: Integer;
begin
  for i:=iTotal downto 1 do
  begin
    if i<=iValue then
      if i = iTotal then
        Memo1.Lines.Add(Str IntToStr(i))
      else
       SumNumber(iTotal-i, i, Str IntToStr(i) ' ');
  end;
end;
adrain
一般會員


發表:39
回覆:28
積分:13
註冊:2004-07-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-23 10:41:58 IP:61.59.xxx.xxx 未訂閱
在此感謝Chance36跟jimmy_wei兩位大大的熱情幫忙, 您們所給的全是我要的,所以很難抉擇要給哪一位分數,不過jimmy_wei大大的程式是直接剔除反向配對的重複,不需另外再判定,所以就給jimmy_wei大大了
系統時間:2024-05-18 4:58:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!