Permutation ohne beachtung der reihenfolge + rechnung??
-
Hallo evt kann mir einer bei einen Problem helfen wo ich schon seid exakt 3 tage rumbrüte
das problem ist das ich ein array mit x belibigen zahlen habe zb {1,2,3,4}
nun brauche ich eine funktion wo ich die anzahl der gruppe angebe und es dann in folgender form ausrechnet
zb mit 1 gruppe : 1+2+3+4
zb mit 2 gruppen: 1*2+1*3+1*4+2*3+2*4+3*4
zb mit 3 gruppen: 1*2*3+1*2*4+1*3*4+2*3*4
zb mit 4 gruppen: 1*2*3*4das wäre jetzt alle möglichkeiten für ein array mit 4 zahlen nun aber wenn ich zb 6 oder 8 zahlen im array habe gibt es ja noch höhere gruppen und er soll eben alles auch noch ausrechnen lassen
bisher habe ich
double Permute(double ar[],int gruppe,int start,int end) { int count = sizeof(ar); double tmp = 0.0; if(gruppe!=1) { if(start==0) { for(int i=start;i<(count-gruppe+1);i++) tmp += ar[i]*Permute(ar,--gruppe,1,(count-gruppe+1)); }else{ for(int i=start;i<end;i++) return ar[i]*Permute(ar,--gruppe,i+1,end+1); } }else{ return ar[start]; } return tmp; }aber irgendwie klappt es nicht oder ich habe ne denklücke kann mir bitte einer die funktion machen ich bin echt schon am verzweifeln
danke und kuss Ganjaaa
-
wenn du permutationen brauchst kansnt du die stl benutzen
#include <algorithm> int main() { int arr[] = {1,2,3,4,5); std::next_permutation(arr, arr+5); // iteratoren werden verlangt für die funktion std::prev_permutation(arr, arr+5); }so meien ich war das ungefähr, guck mal in der c++ reference
-
ahhh cool die funktion kannte ich noch nicht
nur ist das mit beachtung der reihenfolge also es könnte 123 aber auch 321 entstehen und das soll es ja nicht
//Edit
also ich brauche es um eine funktion zu schreiben die mir aus vorher eingegebene null stellen eine polynom formel zu schreiben mit n-grades:
x²+ax+b (bsp 2-grades)die ausgangsformel ist ja (x-NS1)(x-NS2)... (NS = Nullstelle) und wenn man das ausmultipliziert kommt man auf permutationen
evt kennt ja auch einer eine lösung die sowas nicht braucht xD
-
ja kenne ich zufällig auch...
du musst den grad es polynoms kennen und kannst dann mit grad+1 gegebenen punkten grad+1 lineare gleichungssysteme aufstellen und die lösen
wenn du die lösung programmieren willst kannst mal bei wikipedia unter gauß'scher eleminierungsalgorithmus nachschauen (oder so ähnlich
:D)