/ 科创班 /

记录详情

System Error


  
正在同步测试数据,请稍后
题目配置出现错误。请联系题目上传者。
Total time limit longer than {0}s. Cancelled.
[60]
[Hydro](https://hydro.ac)提供评测服务

代码

#include <stdbool.h>
#include <stdio.h>
int n;
int a[10][10];
int sum;
bool black[10], white[10];
void putQueen(int line)
{
    if (line >= n)
    {
        sum++;
        return;
    }
    for (int i = 0; i < n; i++)
    {
        if (black[i] || !a[line][i])
            continue;
        bool flag = true;
        for (int x = line - 1, y = i - 1; x >= 0 && y >= 0; x--, y--)
            if (a[x][y] == 2)
            {
                flag = false;
                break;
            }
        if (!flag)
            continue;
        for (int x = line - 1, y = i + 1; x >= 0 && y < n; x--, y++)
        {
            if (a[x][y] == 2)
            {
                flag = false;
                break;
            }
        }
        if (!flag)
            continue;
        black[i] = true;
        a[line][i] = 2;
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                continue;
            if (white[j] || !a[line][j])
                continue;
            bool flag = true;
            for (int x = line - 1, y = j - 1; x >= 0 && y >= 0; x--, y--)
            {
                if (a[x][y] == 3)
                {
                    flag = false;
                    break;
                }
            }
            if (!flag)
                continue;
            for (int x = line - 1, y = j + 1; x >= 0 && y < n; x--, y++)
            {
                if (a[x][y] == 3)
                {
                    flag = false;
                    break;
                }
            }
            if (!flag)
                continue;
            white[j] = true;
            a[line][j] = 3;
            putQueen(line + 1);
            a[line][j] = 1;
            white[j] = false;
        }
        black[i] = false;
        a[line][i] = 1;
    }
}
int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    putQueen(0);
    printf("%d", sum);
    return 0;
}

信息

递交者
类型
递交
题目
2n皇后问题
题目数据
下载
语言
C
递交时间
2023-06-25 11:13:46
评测时间
2023-06-25 11:13:46
评测机
分数
0
总耗时
0ms
峰值内存
0 Bytes