C :: Aufgabe #96 :: Lösung #2
2 Lösungen
#96
Möglichkeiten der Objektanordnung
Anfänger - C
von Veigar
- 17.12.2015 um 11:25 Uhr
Liebe Community!
Schreibe ein kleines Script das für eine beliebige Menge Objekte alle Möglichkeiten diese anzuordnen ausgibt! (Nicht einfach nur die Anzahl der Möglichkeiten, eine funktion für fakultät zu schreiben ist bedeutend einfacher!)
Beispiel:
Eingabe: "rot,"blau","schwarz"
Ausgabe:
"rot,"blau","schwarz"
"rot","schwarz","blau"
"schwarz","rot",blau"
"schwarz","blau","rot"
"blau","schwarz","rot"
"blau","rot","schwarz"
Verzichtet bitte darauf ganz simpel einfach alle möglichen Ketten mit der gegebenen länge und den gegebenen Zuständen darauf zu untersuchen ob alle Objekte untereinander ungleich sind (Also nicht erst auch Zustände wie "schwarz",schwarz","schwarz" in eine innere Auswahl bringen und dann filtern) um (für große Aufgaben) die Rechenzeit gering zu halten!
Grüße!
Schreibe ein kleines Script das für eine beliebige Menge Objekte alle Möglichkeiten diese anzuordnen ausgibt! (Nicht einfach nur die Anzahl der Möglichkeiten, eine funktion für fakultät zu schreiben ist bedeutend einfacher!)
Beispiel:
Eingabe: "rot,"blau","schwarz"
Ausgabe:
"rot,"blau","schwarz"
"rot","schwarz","blau"
"schwarz","rot",blau"
"schwarz","blau","rot"
"blau","schwarz","rot"
"blau","rot","schwarz"
Verzichtet bitte darauf ganz simpel einfach alle möglichen Ketten mit der gegebenen länge und den gegebenen Zuständen darauf zu untersuchen ob alle Objekte untereinander ungleich sind (Also nicht erst auch Zustände wie "schwarz",schwarz","schwarz" in eine innere Auswahl bringen und dann filtern) um (für große Aufgaben) die Rechenzeit gering zu halten!
Grüße!
#2
von Siriora (100 Punkte)
- 08.01.2016 um 12:10 Uhr
#include<stdio.h>
#include<stdlib.h>
int fak(int a){//funktion für Fakultät
int i ;
int f = 1;
for(i=1;i<=a;i++){
f = f * i;
}
return f;
}
int main(){
int AO = 20,i,c = 0 ; // AO:Anzahl Objekte i:Zählvariable c:counter
int *Objects = malloc(AO * sizeof(int)); //Array für Objekte
for(i=0;i<AO;i++){ //Array Wertzuweisung
Objects[i] = i+1;
}
int p = AO-1; //Eigentlicher algorithmus p Zeigt auf ende des Arrays
int tmp = 0;
do{
tmp = Objects[p]; //Einfacher Arrayplatztausch
Objects[p] = Objects[p-1];
Objects[p-1] = tmp;
c++;
for(i=0;i<AO;i++){
printf("%d",Objects[i]);
}
printf("\n");
if(c%(AO-1) == 0){ //Arraytausch solange bis zum anfang des Arrays dann wieder am ende angefangen
p = AO -1;
}else{
p--;
}
}while(c%fak(AO) != 0); //Das ganze solange bis man alle Kombinationen durchhat
free(Objects);
return 0;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
