diff options
Diffstat (limited to 'modules/benchmark')
| -rw-r--r-- | modules/benchmark/nqueens.c | 20 | 
1 files changed, 10 insertions, 10 deletions
| diff --git a/modules/benchmark/nqueens.c b/modules/benchmark/nqueens.c index 6aad7638..bda9f884 100644 --- a/modules/benchmark/nqueens.c +++ b/modules/benchmark/nqueens.c @@ -10,13 +10,12 @@  #include "benchmark.h"  /* if anything changes in this block, increment revision */ -#define BENCH_REVISION 2 -#define QUEENS 6 +#define BENCH_REVISION 3 +#define QUEENS 9  #define CRUNCH_TIME 5 -int row[QUEENS]; -bool safe(int x, int y) { +bool safe(int x, int y,int *row) {      int i;      for (i = 1; i <= y; i++)          if (row[y - i] == x || row[y - i] == x - i || row[y - i] == x + i) @@ -24,13 +23,13 @@ bool safe(int x, int y) {      return true;  } -int nqueens(int y) { +int nqueens(int y,int *row) {      int x;      for (x = 0; x < QUEENS; x++) { -        if (safe((row[y - 1] = x), y - 1)) { -            if (y < QUEENS) { -                nqueens(y + 1); +      if (safe((row[y - 1] = x), y - 1, row)) { +            if (y <= QUEENS) { +	        nqueens(y + 1, row);              } else {                  break;              } @@ -42,7 +41,8 @@ int nqueens(int y) {  static gpointer nqueens_for(void *data, gint thread_number)  { -    nqueens(0); +    int row[QUEENS+1]; +    nqueens(1,row);      return NULL;  } @@ -58,7 +58,7 @@ benchmark_nqueens(void)      r = benchmark_crunch_for(CRUNCH_TIME, 0, nqueens_for, NULL);      r.revision = BENCH_REVISION; -    snprintf(r.extra, 255, "q:%d", QUEENS); +    snprintf(r.extra, 255, "q:%d", QUEENS-1);      r.result /= 25; | 
