Пример #1
0
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"); */
}
Пример #2
0
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;
}
Пример #3
0
int totalNQueens(int n) {
    vector<int> columns;
    if(n == 0){
        return 0;
    }
    return queens(columns, n);
}
Пример #4
0
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
}
Пример #5
0
int main()
{
clrscr();
queens(1);
print_solution();
getch();
return(0);
}
Пример #6
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;
}
Пример #7
0
Файл: 8q.c Проект: cc65/cc65
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;
}
Пример #8
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;
}
Пример #9
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;
}
Пример #10
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;
}
Пример #11
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);
			}
		}
	}
}
Пример #12
0
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;
}
Пример #13
0
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);
		}
	}
}
Пример #14
0
Файл: 8q.c Проект: cc65/cc65
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;
                }
}
Пример #15
0
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);
        }
    }
}
Пример #16
0
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;
		}
	}
}
Пример #17
0
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++;
}
Пример #18
0
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;
}
Пример #19
0
int main(int argc, char* argv[]){
	queens(1);
	printSolution();
	return 0;
}
Пример #20
0
int main() {

	queens(0);
	return 0;
}
Пример #21
0
void main()
{
queens(1);
 printf("\n..%d solutionas..",cnt);
}