21 printf(
"\nTMath::Permute simple test\n");
22 printf(
"==========================\n");
27 for(i=0; i<4; i++) a[i]=i;
30 for(
Int_t i=0;i<4;printf(
"%c",static_cast<char>(aa+a[i++])));
34 printf(
"Found %d permutations = 4!\n",icount);
40 printf(
"\nTMath::Permute simple test with repetition\n");
41 printf(
"==========================================\n");
46 for(i=0; i<6; i++) a[i]=(i+2)/2;
49 for(
Int_t i=0;i<5;printf(
"%c",static_cast<char>(aa+a[i++])));
53 printf(
"Found %d permutations = 5!/(2! 2!)\n",icount);
64 Int_t &s=a[8], &u=a[9];
65 Int_t nine, three, neuf, trois;
67 printf(
"\nTMath::Permute fancy test\n");
68 printf(
"=========================\n");
69 printf(
"This is a program to calculate the solution to the following problem\n");
70 printf(
"Find the equivalence between letters and numbers so that\n\n");
71 printf(
" NINE*THREE = NEUF*TROIS\n\n");
72 for(
Int_t ii=0; ii<10; ii++) a[ii]=ii;
74 nine=((n*10+i)*10+n)*10+
e;
75 neuf=((n*10+
e)*10+u)*10+
f;
76 three=(((t*10+
h)*10+r)*10+
e)*10+e;
77 trois=(((t*10+
r)*10+o)*10+i)*10+s;
78 if(nine*three==neuf*trois) {
79 printf(
"Solution found!\n\n");
80 printf(
"T=%d N=%d E=%d S=%d F=%d H=%d R=%d I=%d O=%d U=%d\n",t,n,e,s,f,h,r,i,o,u);
81 printf(
"NINE=%d THREE=%d NEUF=%d TROIS=%d\n",nine,three,neuf,trois);
82 printf(
"NINE*THREE = NEUF*TROIS = %d\n",neuf*trois);
86 printf(
"No solutions found -- something is wrong here!\n");
Bool_t Permute(Int_t n, Int_t *a)
Simple recursive algorithm to find the permutations of n natural numbers, not necessarily all distinc...
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e