Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array berechnen (https://www.delphipraxis.net/66492-array-berechnen.html)

backdraft 30. Mär 2006 13:30


Array berechnen
 
Hallo zusammen,

ich habe folgende Aufgabenstellung:

Ich habe einen Array mit x-Zeilen die Zahlen enthalten
Auf der anderen Seite habe ich eine Zahl y.

Jetzt möchte ich wissen, welche der Array Positionen in Summe die Zahl y ergeben.

Ich habe es mit Binärschaltung versucht. Das ganze geht gut, solange ich ein paar Positionen drin habe.
Sobald ich aber schon 100 Zeilen im Array habe, läuft er sich tot.

Hat jemand einen anderen Lösungsansatz?

Kroko1999 30. Mär 2006 13:39

Re: Array berechnen
 
array x sortieren

Backtracing über die Summenbildung

freak4fun 30. Mär 2006 13:44

Re: Array berechnen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, y: Integer;
begin
  y := StrToInt(Edit1.Text);
  for i := Low(MyArray) to High(MyArray) do
    for j := Low(MyArray) to High(MyArray) do
      if MyArray[i] + MyArray[j] = y then
        ListBox1.Items.Add(Format('I: %d J: %d', [i, j]));
end;
MfG
freak

marabu 30. Mär 2006 14:20

Re: Array berechnen
 
Hallo Oliver,

deine Aufgabenstellung kennen die Wirtschaftsinformatiker als Rucksack-Problem.

Grüße vom marabu

TheAn00bis 30. Mär 2006 15:05

Re: Array berechnen
 
Zitat:

Zitat von freak4fun
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, y: Integer;
begin
  y := StrToInt(Edit1.Text);
  for i := Low(MyArray) to High(MyArray) do
    for j := Low(MyArray) to High(MyArray) do
      if MyArray[i] + MyArray[j] = y then
        ListBox1.Items.Add(Format('I: %d J: %d', [i, j]));
end;
MfG
freak

Man darf doch nicht eines mit sich selbst addieren, oder?
Also:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, y: Integer;
begin
  y := StrToInt(Edit1.Text);
  for i := Low(MyArray) to High(MyArray) do
    for j := Low(MyArray) to High(MyArray) do
      if (MyArray[i] + MyArray[j] = y) and (i<>j) then
        ListBox1.Items.Add(Format('I: %d J: %d', [i, j]));
end;
Oder sehe ich da was falsch?

freak4fun 30. Mär 2006 15:11

Re: Array berechnen
 
Zitat:

Zitat von TheAn00bis
Man darf doch nicht eines mit sich selbst addieren, oder?

Ich darf das. :mrgreen: Aber was ich gepostet hab ist ja nur ein Denkanstoß. ;)

Zitat:

Zitat von backdraft
Hat jemand einen anderen Lösungsansatz?

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz