void backtrace(int t)
{
if(t > num)
{
sum++;
for(int m = 1; m < num; m ++)
{
cout << x[m];
}
cout <<end;
}
else
for(int i = 1; i <= num; i ++)
{
x[t] = i;//表示第i行 皇后放在第x[i]的位置
if(place(t))
backtrace(t + 1);
}
}
bool place(int k)
{
for(int j = 1; j < k; j ++)
if(abs(x[k] - x[j]) == abs(k - j) || x[k] == x[j])//此处的place函数用来
//进行我们上面所说的条件的判断,如果成立,进入下一级递归
return false;
return true;
}
static int num;
static int *x;
static int sum;
void main()
{
num = 8;
sum = 0;
x = new int[num + 1];
for(int i = 0; i <= num; i ++)
x[i] = 0;
backtrace(1);
cout << "total results is:" << sum;
}
05-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交