【发布时间】:2015-06-06 10:26:02
【问题描述】:
这是N queens problem。我知道N queens 问题及其解决方案,我使用回溯方法用 C++ 编程语言编写了代码:
#include <iostream>
using namespace std;
int col[100];
int n;
int m;
bool check(int i,int k){
for(int j=1 ; j<k ; j++){
if(col[j] == i || i-k == col[j] - j || i+k == col[j]+j)return false;
}
return true;
}
void queens(int k){
for(int i=1 ; i<=n ; i++){
if(check(i,k)){
col[k] = i;
if(k == n){
for(int j=1 ; j<=n ; j++)cout<<col[j]<<" ";
cout<<endl;
}
else queens(k+1);
}
}
}
int main(){
n = 4;
queens(1);
}
但这是我的问题,如果我们有 m 个皇后而不是 n 其中 m 我如何通过回溯方法解决这个问题我认为对我的代码进行一些更改可以解决问题,但我不确定。
我用谷歌搜索了它,但什么也没找到,所以有没有针对这个问题的回溯解决方案?
【问题讨论】:
标签: algorithm backtracking n-queens