m0_74799835 2023-10-23 00:24 采纳率: 0%
浏览 4

关于#c语言#的问题:pta显示答案错误,但是我明明测试数据通过了

#include <stdio.h>
#include <stdlib.h>

void Queen(int n, int *count);
void printQueen(int q[], int n);
int place(int i, int j, int q[]);

int main() {
    int n;

    scanf("%d", &n);
    int count = 0;
    Queen(n, &count);
    printf("%d\n", count);
    return 0;
}

void Queen(int n, int *count) {
    int i = 0;
    int *q = (int *)malloc(n * sizeof(int));
    q[0] = -1;

    while (i >= 0) {
        q[i]++;
        while (!place(i, q[i], q) && q[i] < n) {
            q[i]++;
        }

        if (q[i] < n) {
            if (i == n - 1) {
                (*count)++;
                
            } else {
                i++;
                q[i] = -1;
            }
        } else {
            i--;
        }
    }

    free(q); // 释放动态分配的内存
}

void printQueen(int q[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d ", q[i] + 1);
    }
    printf("\n");
}

int place(int i, int j, int q[]) {
    for (int k = 0; k < i; k++) {
        if (q[k] == j || abs(q[k] - j) == abs(k - i))
            return 0;
    }
    return 1;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-23 02:12
    关注

    【相关推荐】




    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月23日