From 4022e5c95210631e4aceb08eaf9d9071aa5aefc4 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Tue, 15 Sep 2026 08:16:43 +0800 Subject: Set up a git repo --- tests/sysy_lvX/093_n_queens.sy | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/sysy_lvX/093_n_queens.sy (limited to 'tests/sysy_lvX/093_n_queens.sy') diff --git a/tests/sysy_lvX/093_n_queens.sy b/tests/sysy_lvX/093_n_queens.sy new file mode 100644 index 0000000..5a5c086 --- /dev/null +++ b/tests/sysy_lvX/093_n_queens.sy @@ -0,0 +1,49 @@ +int ans[50], sum = 0, n; + +int row[50], line1[50], line2[100]; + +void printans() +{ + sum = sum + 1; + int i = 1; + while (i <= n) { + putint(ans[i]); + if (i == n) { + putch(10); + return; + } else + putch(32); + i = i + 1; + } +} + +void f(int step) +{ + int i = 1; + while (i <= n) { + if (row[i] != 1 && line1[step + i] == 0 && !line2[n + step - i]) { + ans[step] = i; + if (step == n) + printans(); + row[i] = 1; + line1[step + i] = 1; + line2[n + step - i] = 1; + f(step + 1); + row[i] = 0; + line1[step + i] = 0; + line2[n + step - i] = 0; + } + i = i + 1; + } +} + +int main() +{ + int N = getint(); + while (N > 0) { + n = getint(); + f(1); + N = N - 1; + } + return sum; +} -- cgit v1.2.3