void queens(int (*queen)[size],int row){ if(row == size){ count ++; printf("==========count = %d=======\n",count); for(int i = 0 ; i < size; i++){ for(int j = 0 ;j<size;j++){ if(queen[i][j] == 1){ printf("%3d",1); }else{ printf("%3d",0); } } printf("\n"); } printf("===========================\n\n"); } /* printf("#1.running\n"); */ for(int i = 0 ; i < size ;i++){ int flag = 1; for(int j = 0 ; j<row;j++){ if(i == c[j] || c[j] - j == i - row || j+c[j] == i+row ){ flag = 0; break; } } if(flag){ c[row] = i; queen[row][i] = 1; queens(queen,row+1); queen[row][i] = 0; } } /* printf("running\n"); */ }
int main() { struct timespec ts_start; struct timespec ts_end; FILE *fp = fopen("queens_c.dat", "w"); if (!fp) { fprintf(stderr, "Cannot open data file\n"); exit(1); } for (int i = 1; i <= max; i++){ clock_gettime(CLOCK_MONOTONIC, &ts_start); int solution = queens(i); clock_gettime(CLOCK_MONOTONIC, &ts_end); struct timespec time = diff(ts_start, ts_end); double t = (double) time.tv_sec * 1000.0 + (double)time.tv_nsec / 1000000.0; printf("%d queens: %lf ms.\n", i, t); fprintf(fp, "%d\t%lf\n", i, t); if (solutions[i-1] != solution){ printf("Invalid result!\n"); exit(1); } } return 0; }
int totalNQueens(int n) { vector<int> columns; if(n == 0){ return 0; } return queens(columns, n); }
void queens(int i) { char resp; for(t[i]=1;t[i]<=8;t[i]++) { if(empty(i)) { if(i==8) { print_solution(); /* If this exit is commented, it will show ALL possible combinations */ printf ("\nType any letter to get another solution (Q for Quit): \n"); scanf (" %c",&resp); if (resp== 'Q') exit(0); //getch(); //exit(0); //getch(); } else { // Recurse! queens(i+1); } }// if }// for }
int main() { clrscr(); queens(1); print_solution(); getch(); return(0); }
vector<vector<string> > solveNQueens(int n) { vector<int> columns; vector<vector<string> > ret; if(n == 0){ return ret; } queens(columns, n, ret); return ret; }
int main(void) { int i; for (i = 0; i < 15; i++) up[i] = down[i] = 1; for (i = 0; i < 8; i++) rows[i] = 1; queens(0); return 0; }
int main(int argc, char const *argv[]) { system("clear"); int i; int n = 0; scanf("%d", &n); printf("board size,calls,time\n"); for (i = 0; i <= n; i++) { queens(i); } return 0; }
main() { long i; printf("generates 92 solutions. \n15863724 is first\n\n"); for (i = 0; i < 15; i++) up[i] = down[i] = 1; for (i = 0; i < 8; i++) rows[i] = 1; queens(0); printf("...and...\n84136275 is last\nTook about 58 sec on 1.6mhz elf with St Judy's compiler\n"); return 0; }
int main(){ int n; // solution is n-queens. allow user to select dimensions via printf("Enter board size. ie NxN\n"); scanf("%d", &n); queens(1,n); print_solutions(n); return 0; }
void queens(int i) { for(t[i] = 1; t[i]<=8; t[i]++) { if(empty(i)) { if(i==8) { printSolution(); exit(0); //return; } else { queens(i+1); } } } }
int queens(vector<int> columns, int n){ int row, col, ret(0); row = columns.size(); if(row == n){ return 1; } for(col = 0; col < n; col++){ if(check(columns, row, col)){ columns.push_back(col); ret += queens(columns, n); columns.pop_back(); } } return ret; }
void queens(int i) { int j; for(t[i]=0; t[i]<8; t[i]++) { for(j=0; t[i]!=t[j] && abs(t[i]-t[j])!=abs(i-j) && j<8; j++); if(i==j) { if(i==7) { print(); } else queens(i+1); } } }
void queens(int c) { int r; for (r = 0; r < 8; r++) if (rows[r] && up[r-c+7] && down[r+c]) { rows[r] = up[r-c+7] = down[r+c] = 0; x[c] = r; if (c == 7) print(); else queens(c + 1); rows[r] = up[r-c+7] = down[r+c] = 1; } }
void queens(int i) { for(t[i]=1;t[i]<=N;t[i]++) { if(empty(i)) { if(i==N) { print_solution(); //exit(0); } else queens(i+1); } } }
int queens(c) { long r; //printf("queens(%d)\n",c); for (r = 0; r < 8; r++){ //printf("\trows[%d]=%d\n",r,rows[r]); if (rows[r] && up[r-c+7] && down[r+c]) { rows[r] = up[r-c+7] = down[r+c] = 0; x[c] = r; if (c == 7) print(); else queens(c + 1); rows[r] = up[r-c+7] = down[r+c] = 1; } } }
void queens(int r,int n){ // recursive backtracking function // r = row, n = board dimension int c ; // column for (c = 1; c <= n ; c++){ if(setQ(r,c)){ // if we are allowed to set the queen x[r-1] = c; if (r == n){ // no more columns to attempt to set save(n); } else{ queens(r+1,n); x[r-1] = 0; // backtrack! } } } iterations++; }
void queens(vector<int> columns, int n, vector<vector<string> >& ret){ int row, col; row = columns.size(); if(row == n){ string s(n, '.'); vector<string> temp(n, s); for(int i = 0; i < n; i++){ temp[i][columns[i]] = 'Q'; } ret.push_back(temp); return; } for(col = 0; col < n; col++){ if(check(columns, row, col)){ columns.push_back(col); queens(columns, n, ret); columns.pop_back(); } } return; }
int main(int argc, char* argv[]){ queens(1); printSolution(); return 0; }
int main() { queens(0); return 0; }
void main() { queens(1); printf("\n..%d solutionas..",cnt); }