全WA,格式问题吗?
查看原帖
全WA,格式问题吗?
947842
aton_puck楼主2023/8/6 15:41
#include <iostream>
using namespace std;
const int N= 13;
bool st[N][N];
bool COL[N];  //列
bool diag[N*2];//对角,左下到右上
bool undiag[N*2]; //反对角,左上到右下
int n;
int cnt=3; //输出前三个方案
int res=0;  //总方案数
void dfs(int u) //表示遍历到了第u行(从第0行开始)
{
    if(u == n) //放完了
    {
        res++;
        if(--cnt)
        {
            for(int i=0 ; i<n ; i++)
                for(int j=0 ; j<n ; j++)
                    if(st[i][j])
                        cout<<j+1<<" ";
            cout<<endl;
        }
        return;
    }

    for(int i=0 ; i<n ; i++)
    {
        if(!COL[i] && !diag[u+i] && !undiag[i-u+n-1])  //该位置可以放皇后
        {
            COL[i] = diag[u+i] = undiag[i-u+n-1] = true; //皇后放下
            st[u][i] = true;
            dfs(u+1);
            COL[i] = diag[u+i] = undiag[i-u+n-1] = false;  //恢复
            st[u][i] = false;
        }
    }

}
int main()
{
    cin>>n;
    dfs(0);
    cout<<res<<endl;
    return 0;
}

我输出的三行和样例的顺序不一样,不会因为这个吧?

2023/8/6 15:41
加载中...