betty3 发表于 2023-2-17 20:53:24

朕想知道

wlwen1117 发表于 2023-2-20 01:14:51

1

wednesdayyy 发表于 2023-2-20 14:49:00

朕想知道

SAiKETSU 发表于 2023-3-2 14:42:00

{:5_109:}

84144402100 发表于 2023-3-2 17:23:03

1

Mamma 发表于 2023-3-5 15:17:55

学习学习

鱼c123456 发表于 2023-3-10 18:16:15

#include <stdio.h>

#define Q 8

int count;

int check(int row, int col, int (*queen));
void setQueen(int col, int (*queen));

int check(int row, int col, int (*queen))
{
      int i;

      for (i = 0; i < Q; i++)
      {
                if (queen == 1)
                {
                        return 0;
                }
                if (queen == 1)
                {
                        return 0;
                }
      }

      for (i = 0; i < col; i++)
      {
                if (row-(i+1) >= 0)
                {
                        if (queen == 1)
                        {
                              return 0;
                        }
                }
                if (row+(i+1) < Q)
                {
                        if (queen == 1)
                        {
                              return 0;
                        }
                }
      }

      for (i = 1; i < Q-col; i++)
      {
                if (row-i >= 0)
                {
                        if (queen == 1)
                        {
                              return 0;
                        }
                }
                if (row+i < Q)
                {
                        if (queen == 1)
                        {
                              return 0;
                        }
                }
      }

      return 1;
}

void setQueen(int col, int (*queen))
{
      int i, j, row;

      // 如果 col == 4, 打印四皇后棋盘
      if (col == Q)
      {
                for (i = 0; i < Q; i++)
                {
                        for (j = 0; j < Q; j++)
                        {
                              printf("%d ", queen);
                        }
                        putchar('\n');
                }
                putchar('\n');

                count++;

                return;
      }

      for (row = 0; row < Q; row++)
      {
                if (check(row, col, queen))
                {
                        queen = 1;
                        setQueen(col+1, queen);
                        queen = 0;
                }
      }
}


int main(void)
{
      int array = {0};
      int (*queen) = array;

      setQueen(0, queen);

      printf("%d\n", count);

      return 0;
}

aqi123 发表于 2023-3-15 21:09:03

朕想知道

lpzju 发表于 2023-3-20 10:06:47

朕想知道

Ian_Li 发表于 2023-3-23 09:24:25

回复“朕想知道”查看完整代码!

皮强强 发表于 2023-3-23 20:24:34

朕不想知道

15945632454 发表于 2023-3-25 15:56:22

076923441086 发表于 2023-3-29 23:20:23

答案出现

zft 发表于 2023-4-4 20:25:36

ooooops

Little_Prince 发表于 2023-4-4 22:52:01


朕想知道

马良ccc 发表于 2023-4-11 14:21:14

朕想知道

夏季的春秋 发表于 2023-4-11 14:32:31

朕想知道

groottt 发表于 2023-4-12 15:32:25

朕想知道

零度体温 发表于 2023-4-22 23:42:39

朕想知道

yukikonfire 发表于 2023-4-23 23:21:07

1
页: 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38
查看完整版本: 通用解题思想:回溯法(附八皇后问题解析)