n Zahlen aus einem Array addieren

Hitchblade

Mitglied
Hallo Leute!

Bin gerade neu im Forum und war noch nie richtig in einem Forum.
Wenn ich was falsch gemacht habe, bitte sagen. :)

Ich dachte bis jetzt dass ich schon Ahnung von Java hab, aber ich bin mittlerweile echt am zweifeln...

Die Problemstellung sieht so aus:

Es ist eine Menge n und m gegeben. n besagt im Prinzip wie viele Zahlen in dem bestimmten Array addiert werden sollen. Es ist aber nicht bekannt welche Zahlen des Arrays addiert werden müssen. Das heißt ich muss im Prinzip alle Möglichkeiten ausrechnen bis die Summe den Wert m besitzt.

Bin ich vollkommen bescheuert oder ist es doch so schwer?

Helft mir bitte! :toll:

Falls ihr noch fragen habt, sagt bescheid...
 

rme

Top Contributor
Hallo :)

Keine Sorge, du machst alles richtig, was das Forum betrifft ;)

Bist du dir sicher, dass n und m Mengen sind?

Lautet die Aufgabe vielleicht so, dass du ein Array mit Zahlen gegeben hast und sollst nun n Zahlen wählen, sodass die Summe m ergibt? Das klingt arg nach einer Variante von Subset-Sum, d.h. es gibt keine effiziente Lösung dafür, außer alles zu probieren. Bei dir ist immerhin n gegeben, sodass du direkt alle Permutationen der Länge n probieren kannst.

Hilft das?
 

Hitchblade

Mitglied
Zunächst mal danke für die schnelle Antwort...

Dann bin ich ja froh. :)

Ja genau. So habe ich das gemeint. :D

Genau. Es ist eigentlich die Einzige Möglichkeit alles durch zu probieren.

Mein Problem ist dass ich nach ca 8 Ansätzen (... und gefühlten 60 Stunden) einfach nicht mehr weiß was ich machen soll...
 

rme

Top Contributor
Wie sahen deine Ansätze denn ungefähr aus? Hattest du bei einem das Gefühl, kurz davor zu sein? Oder bist du mittlerweile so kaputt davon, dass du gern einen Ansatz hättest, den du dann runterprogrammieren kannst? :)
 

Hitchblade

Mitglied
Naja...

Der beste Ansatz sieht ca so aus:

Array und die Möglichkeiten (Angenommen n = 4)
Array[1] - - - - - - - - ...
Array[2] - - - - -
Array[3] - - - - - ...
Array[4] - - - - - ...
Array[5] - - - - - ...
Array[6] - - - - ...

Ich hoffe man kann ungefähr erkennen was ich meinte... Anfangs hatte ich den ansatz dass ich die 'i'te Zahl + die 'i'te+1te Zahl nahm... Das waren aber zu wenig Möglichkeiten...

Ich bin echt kein Mensch der unbedingt die Lösung haben will, aber mich quält diese Aufgabe schon seit 3 Nächten...

Mit anderen Worten... Ja, ich hätte gerne einen Ansatz den ich runterprogrammiere. :D

btw Ich bin tierisch übermüdet... :toll:
 

Hitchblade

Mitglied
Okay. Man kann doch nicht erkennen was ich meinte... Im Prinzip habe ich alle möglichkeiten aufgemalt um zu gucken wie ich wo eine schleife erstellen könnte usw... :D
 

rme

Top Contributor
Als Freund der funktionalen Programmierung fällt mir als erstes ein rekursiver Ansatz ein:

Ich würde eine Methode schreiben, der das Array übergeben wird und die zurückgibt, ob sie Erfolg hat. Als weitere Parameter bekommt sie die verbleibende Summe und die verbleibende erlaubte Zahl an Elementen. Also der erste Aufruf mit prüfe(array, n, m).

Wenn n noch nicht 0 ist, nimmt die Funktion das erste Element aus dem Array, sofern die Summe dann noch nicht überschritten ist, und ruft sich selbst rekursiv auf, wobei dann das Array ohne das genommen Element, n um 1 reduziert und m und den Wert des genommen Elements reduziert wird.

Falls das zu langsam ist, müsste man die Tatsache besser ausnutzen, dass genau n Element gefordert sind.

Falls es eine StackOverFlowException gibt, weil es zu viele Elemente sind: Endrekursiv formulieren und auflösen.
 

Hitchblade

Mitglied
Ich würde eine Methode schreiben, der das Array übergeben wird und die zurückgibt, ob sie Erfolg hat. Als weitere Parameter bekommt sie die verbleibende Summe und die verbleibende erlaubte Zahl an Elementen. Also der erste Aufruf mit prüfe(array, n, m).

Wenn n noch nicht 0 ist, nimmt die Funktion das erste Element aus dem Array, sofern die Summe dann noch nicht überschritten ist, und ruft sich selbst rekursiv auf, wobei dann das Array ohne das genommen Element, n um 1 reduziert und m und den Wert des genommen Elements reduziert wird.

Also...

Als Beispiel: array = {6, 3, -7, 1, -4, 0}, n = 3, m = -1

Java:
private static boolean prüfe(int[] array, int n, int m)
{
If (n != 0)
{
if (array[0] < m)
{
return prüfe(array, n-1, m);
}
}
return true;
}

Das kann aber net stimmen... Ich bin einfach zu kaputt... Erst recht bei Rekursionen... :D

Danke aber ich werde es wohl net schaffen wenn dir oder mir net durch ein Wunder ein Ansatz mit Schleifen einfällt. :toll:
 

rme

Top Contributor
Genauer lesen :D m und array müssen natürlich auch angepasst werden. Kannst du Haskell? Dann kann ich dir den Ansatz da schnell zeigen. Aber wenn du für Rekursionen gerade zu müde bist, lieber nicht.. ;)
 

rme

Top Contributor
Was soll sie denn zählen? Ich dachte, man könnte einfach von der Summe und der Anzahl der Elemente abziehen, bis eins 0 wird - und dann überlegen, ob das gerade gut oder schlecht ist.
 

Hitchblade

Mitglied
Angenommen zusätzlich des vorherigen Beispiel mit i = 0...

Java:
private static boolean prüfe(int[] array, int n, int m, int i)
{
	if (n != 0)
	{
		if (array[i] < m)
		{
			array[i] = 0;
			return prüfe(array, n-1, m, i++);
		}
		return true
	}
}
 

rme

Top Contributor
Achso, mit Zähler meinst du eine Art Laufindex. Ja, das spart es dir natürlich, ein neues Array zu übergeben - also auch gut und richtig :)
 

rme

Top Contributor
Nein, das ist noch nicht vollständig. Du musst dir klarmachen, was die Methoden momentan macht und was es bedeutet, wenn ein Aufruf false zurückgibt. Das bedeutet nämlich, dass die Rekursion ab dort mit dem Wählen von i nicht erfolgreich war. Also muss es wohl anders probiert werden.. usw.
 

Hitchblade

Mitglied
Hmm... Oke... Ich merke schon dass ich es zumindest heute Abend nicht mehr schaffe...

Habe zum Glück bis Freitag Zeit und probiere es morgen nochmals mit klarem Kopf. Werde mich bestimmt nochmal melden.

Aber schonmal ein riesiges Dankeschön! Du hast mir sehr weitergeholfen, auch wenn ich mir ein Ansatz mit Rekursion nicht erhoft habe.^^


gn8. :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
T Mehrfach auftretende Zahlen in einem Array Java Basics - Anfänger-Themen 13
M mehrfach auftretende zahlen in einem array Java Basics - Anfänger-Themen 6
A Sortieren von Zahlen in einem Array Java Basics - Anfänger-Themen 13
D 6 zahlen aus einem array rausziehen Java Basics - Anfänger-Themen 2
P String aus Zahlen auslesen und in einem Array speichern Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
A Harshad Zahlen sollen in einem Intervall ausgegeben werden Java Basics - Anfänger-Themen 8
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Datentypen Zahlen aus einem alphanummerischen Feld in ein Interger Feld portieren Java Basics - Anfänger-Themen 13
S Erste Schritte Schleife zum ordnen von Zahlen in einem Arrays Java Basics - Anfänger-Themen 2
C Problem mit der Extraktion von Zahlen aus einem String Java Basics - Anfänger-Themen 8
N zahlen und operatoren gemischt in einem Feld Java Basics - Anfänger-Themen 9
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
M negative Zahlen bei Intervallen Java Basics - Anfänger-Themen 10
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K Java gleicher Wert von Zahlen? Java Basics - Anfänger-Themen 5
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
J Operatoren Zahlen addieren Java Basics - Anfänger-Themen 13
B Threads Counter mit ungeraden Zahlen Java Basics - Anfänger-Themen 32
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Stream mit den ersten n natürlichen Zahlen Java Basics - Anfänger-Themen 4
D Größtes Palindrom Produkt aus zwei dreistelligen Zahlen Java Basics - Anfänger-Themen 60
sserio Befreundete Zahlen Java Basics - Anfänger-Themen 7
AhmadSlack Verzweigungen zahlen multiplizieren Java Basics - Anfänger-Themen 4
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
H Zahlen kürzen Java Basics - Anfänger-Themen 2
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
G Java eingelesene Zahlen Java Basics - Anfänger-Themen 2
D Zahlen werden falsch gekürzt :? Java Basics - Anfänger-Themen 27
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
J 10 positive Zahlen eingeben Java Basics - Anfänger-Themen 10
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
M Zahlen erraten Java Basics - Anfänger-Themen 7
S Mit nextGaussian() positive Zahlen erzeugen? Java Basics - Anfänger-Themen 39
D auch negative Zahlen sotieren Java Basics - Anfänger-Themen 18
M Warum berechnet mein Primzahlenprog zu hohe Zahlen nicht? Java Basics - Anfänger-Themen 20
W Bell Zahlen Java Basics - Anfänger-Themen 2
H Min und Max von Zahlen Java Basics - Anfänger-Themen 10
der_Schokomuffin Fehler bei Zufallsgeneration von Zahlen Java Basics - Anfänger-Themen 7
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
Moji Klassen Array Zahlen zu Sternchen (U-Helmich 7.1-4) Java Basics - Anfänger-Themen 5
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
T Perfekte Zahlen ausgeben Java Basics - Anfänger-Themen 12
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
H Zahlen 1-100 Java Basics - Anfänger-Themen 2
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
V Hilfe Aufgabe Zahlen Java Basics - Anfänger-Themen 9
J Zahlen addieren Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben