实验题目:回溯算法设计 实验目的:
掌握回溯法解题的基本思想;掌握回溯算法的设计方法;针对子集问题,熟练掌握回溯递归算法。`#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