hanswürstchen
Grünschnabel
Hi! Ich hab folgendes Problem: Ich muss Binärwörter erstellen die als Kriterium haben, dass wenn ein Wort zwei aufeinander folgende 11 im Wort hat, noch mindestens eine weitere 1 daran sein muss. Z.B. ist 1010 gültig, 1110 auch aber 1100 nicht. Der Algo. um die Anzahl an gültigen Wörtern zu erlangen lautet "2a(n-1)) - a(n-3) + a(n-4)"
Mein Code gibt nun die maximale Anzahl gültiger Wörter, alle möglichen Kombinationen aber auch die ungültigen wieder.
Kann mir jmd helfen? Wäre echt super!
Hier mal der Code:
Mein Code gibt nun die maximale Anzahl gültiger Wörter, alle möglichen Kombinationen aber auch die ungültigen wieder.
Kann mir jmd helfen? Wäre echt super!
Hier mal der Code:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sanscouple {
public static void main(String[] args)throws NumberFormatException, IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("Bitte einen Wert für x eingeben.");
int x = Integer.parseInt(br.readLine());
System.out.println("Maximale Anzahl an gueltigen Woertern: "+wordCounter(x));
allWords(x);
}
//Anzahl der maximal gueltigen Woerter berechnen
public static int wordCounter(int n) {
if (n == 1) {
return 2;
}
else if (n == 0) {
return 1;
}
else if (n == 2) {
return 3;
}
else if (n == 3) {
return 6;
}
else {
return (2*wordCounter(n-1)) - wordCounter(n-3) + wordCounter(n-4);
}
}
//Anzahl aller Woerter berechnen und ausgeben
public static void allWords(int n) {
System.out.println("Alle Binaerwoerter mit der Laenge " + n + ":");
String x;
int counter = 0;
int i = 0;
do {
x = Integer.toString(i, 2);
if (x.length() < n) {
int maxBits = n - x.length();
for (int j = 1; j <= maxBits; j++) {
x = "0" + x;
}
}
if (x.length() == n) {
System.out.println(x);
counter++;
}
i++;
} while (x.length() <= n);
System.out.println("Anzahl der Binaerwoerter mit der Laenge " + n
+ ": " + counter + " Woerter");
}
}