コード例 #1
0
ファイル: queen.cpp プロジェクト: AssaultKoder95/codejam
int main(){
  while(scanf("%d", &n) == 1){
    memset(used, 0, sizeof(used));
    total = 0;
    nQueens(0);  /* Call this to start recursion */
    printf("Total valid configurations for n=%d: %d\n", n,total);
  }
  return 0;
}
コード例 #2
0
ファイル: N-Queens.cpp プロジェクト: MrBruceLee/LeetCode
 vector<vector<string> > solveNQueens(int n) {
     vector<vector<string> > res;
     vector<string> nQueens(n, string(n, '.'));
     
     vector<bool> flag_col(n, false);         // indicate if the column had a queen before
     vector<bool> flag_45(2 * n - 1, false);  // indicate if the 45° diagonal had a queen before.
     vector<bool> flag_135(2 * n - 1, false); // indicate if the 135° diagonal had a queen before.
     
     solveNQueens(res, nQueens, flag_col, flag_45, flag_135, 0, n);
     return res;
 }
コード例 #3
0
ファイル: NQueens.c プロジェクト: AakashGarg/Algorithms
void main(){
	int n,i,j,k;
	printf("\nNo of Queens : ");
	scanf("%d",&n);
	int x[n+1];
	memset(x,0,sizeof(x));
/*	x[1] = 1;
	i=1,j=2,k=2;
	printf("\n%d %d",place(2,1,x),place(2,2,x));
*/	nQueens(1,n,x);
}
コード例 #4
0
ファイル: NQueens.c プロジェクト: AakashGarg/Algorithms
void nQueens(int i, int n, int *x){
	int j;
	if(i>n){
		printSol(x,n);
//		exit(0);
	}
	for(j=1; j<=n; j++){
		if(place(i,j,x)){
			x[i] = j;
			nQueens(i+1,n,x);
		}
	}
}
コード例 #5
0
ファイル: NQueens.cpp プロジェクト: ZhenyingZhu/CppAlgorithms
    bool NQueens::test() {
        vector<vector<int>> res = nQueens(4);

        vector<int> ans1 = {1, 3, 0, 2};
        vector<int> ans2 = {2, 0, 3, 1};
        for (vector<int> vec : res) {
            if (vec != ans1 && vec != ans2) {
                cout << "Wrong ans " << endl;
                cout << vec_to_string(vec) << endl;

                return false;
            }
        }

        return true;
    }
コード例 #6
0
ファイル: queen.cpp プロジェクト: AssaultKoder95/codejam
void nQueens(int pos){
  int i, j;
  if(pos == n){
    total++;
    for(i = 0; i < n; i++)
      printf("(%d,%d)%c", i, S[i], i == n-1 ? '\n' : ' ');
    return;
  } 
  for(i = 0; i < n; i++){
    if(used[i]) continue;
    for(j = 0; j < pos; j++)
      if(pos-j == abs(i-S[j])) break;
    if(j == pos){
      S[pos] = i;
      used[i] = 1;
      nQueens(pos+1);
      used[i] = 0;
    }
  }
}