其实可以不用dfs

P1219 [USACO1.5] 八皇后 Checker Challenge

ManZhouJi @ 2024-10-20 11:02:17

因为题目说6≤n≤13
于是我直接手算

以下是结果

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n==6)  cout<<"2 4 6 1 3 5\n3 6 2 5 1 4\n4 1 5 2 6 3\n4";
    if(n==7)  cout<<"1 3 5 7 2 4 6\n1 4 7 3 6 2 5\n1 5 2 6 3 7 4\n40";
    if(n==8)  cout<<"1 5 8 6 3 7 2 4\n1 6 8 3 7 4 2 5\n1 7 4 6 8 2 5 3\n92";
    if(n==9)  cout<<"1 3 6 8 2 4 9 7 5\n1 3 7 2 8 5 9 4 6\n1 3 8 6 9 2 5 7 4\n352";
    if(n==10) cout<<"1 3 6 8 10 5 9 2 4 7\n1 3 6 9 7 10 4 2 5 8\n1 3 6 9 7 10 4 2 8 5\n724";
    if(n==11) cout<<"1 3 5 7 9 11 2 4 6 8 10\n1 3 6 9 2 8 11 4 7 5 10\n1 3 7 9 4 2 10 6 11 5 8\n2680";
    if(n==12) cout<<"1 3 5 8 10 12 6 11 2 7 9 4\n1 3 5 10 8 11 2 12 6 9 7 4\n1 3 5 10 8 11 2 12 7 9 4 6\n14200";
    if(n==13) cout<<"1 3 5 2 9 12 10 13 4 6 8 11 7\n1 3 5 7 9 11 13 2 4 6 8 10 12\n1 3 5 7 12 10 13 6 4 2 8 11 9\n73712";
    return 0;
}

by leiwusi @ 2024-10-20 11:12:43

不就是打表吗(算不算发题解啊


by iqiqiqiqiqiqiqiq @ 2024-10-20 11:16:57

神特么打表。。。(小数据范围,可以直接算,但是难写代码的可以打表)


by ManZhouJi @ 2024-10-20 11:33:21

1 3 5 7 12 10 13 4 14 9 2 6 8 11 1 3 5 7 13 10 12 14 6 4 2 8 11 9 1 3 5 7 13 10 12 14 8 4 2 9 11 6 365596

by lingquan @ 2024-10-21 20:33:39

nb


by Lain_yc @ 2024-10-22 21:23:02

%%%打表沈丽


by mmmkkk111 @ 2024-11-12 12:18:33

八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有12 [1]类。计算机发明后,有多种计算机语言可以编程解决此问题。

所以,可以分享一下你手算的解法吗,或者草稿?


|