n皇后 回溯法
实验题目:回溯算法设计
实验目的:
- 掌握回溯法解题的基本思想;
- 掌握回溯算法的设计方法;
- 针对子集问题,熟练掌握回溯递归算法。
- `#include <stdio.h>
#include <math.h>
int x[20], n, count;
int Place(int t)
{
int i;
for (i = 1; i < t; i++)
if ((abs(t - i) == abs(x[i] - x[t])) || (x[i] == x[t]))
return 0;
return 1;
}
void Backtrack(int t)
{
int i;
if (t > n)
{
for (i = 1; i <= n; i++)
printf("%d “, x[i]);
printf(”\n");
count++;
}
else
{
for (i = 1; i <= n; i++)
{
x[t] = i;
if (x[1] > 4) break;
if (Place(t))
Backtrack(t + 1);
}
}
}
int main()
{
printf(“请输入n:”);
scanf_s("%d", &n);
Backtrack(1);
printf(“共%d组答案\n”, count);
return 0;
}`
这是我大二的实验,希望对大家有帮助,代码我是在vs写的,运行都是对的,要是不对就把scanf_s
改回scanf