#include int correct[8]; int array[8]; void fill(int n) { if (n == 8) { int c = 0; for (int i = 1; i <= 7; i++) if (array[i] == i) c++; correct[c]++; return; } for (int i = 1; i <= 7; i++) if (array[i] == 0) { array[i] = n; fill(n+1); array[i] = 0; } } int main(int argc, char *argv[]) { for (int i = 0; i < 8; i++) { correct[i] = 0; array[i] = 0; } fill(1); for (int i = 0; i < 8; i++) printf("%d: %d (%7.2lf%%)\n", i, correct[i], (double)correct[i]/50.4); return 0; }