Hallo, ich habe zu der Aufgabe aus dem Thema http://www.java-forum.org/java-basics-anfaenger-themen/93057-int-array-pattern-zahl-finden.html noch eine Frage (habe es da auch gepostet, aber da das Thema als erledigt markiert ist, wird mir da wahrscheinlich keiner mehr antworten)
Mich würde nun interessieren, wie man sich die Zahlen anzeigen lassen kann.
Also zum beispiel:
{5 8 1 4} Und ich möchte die Summe 12 haben, dass er mir anzeigt:
12 = 8 + 4
In meinem Code zeigt er mir bis jetzt nur an, ob die Summe darstellbar ist.
Habe aber gerade keine Idee, wie er mir die Zusammensetzung anzeigt.
Mich würde nun interessieren, wie man sich die Zahlen anzeigen lassen kann.
Also zum beispiel:
{5 8 1 4} Und ich möchte die Summe 12 haben, dass er mir anzeigt:
12 = 8 + 4
In meinem Code zeigt er mir bis jetzt nur an, ob die Summe darstellbar ist.
Habe aber gerade keine Idee, wie er mir die Zusammensetzung anzeigt.
Java:
class Zielsumme {
public static void main(String[] args) {
// Ermitteln der Dateilaenge
In.open("zahlen.txt");
int length = 0;
while (In.done()) {
In.readInt();
++length;
}
--length;
int[] a = new int[length];
// Schliessen und Wiederoeffnen setzt Dateizeiger
// auf Anfang
In.close();
// Einlesen der Datei
In.open("zahlen.txt");
for (int i = 0; i < length; ++i) {
a[i] = In.readInt();
Out.print(a[i] + " ");
}
In.close();
Out.print("Gewuenschte Summe: ");
int sum = In.readInt();
Out.println("Summe ist "
+ (darstellbar(a, sum) ? "" : "nicht ")
+ "darstellbar");
}
static boolean darstellbar(int[] a, int sum) {
if (sum == 0) {
return true;
} else if (a.length == 1) {
return sum == a[0];
} else {
// aKurz = Kopie von a ohne letztes Element
int[] aKurz = new int[a.length - 1];
for (int i = 0; i < a.length - 1; ++i) {
aKurz[i] = a[i];
}
return darstellbar(aKurz, sum)
|| darstellbar(aKurz, sum - a[a.length - 1]);
}
}
}