美文网首页
2018-10-08八皇后问题三个一维数组ver

2018-10-08八皇后问题三个一维数组ver

作者: SUNRISE_05fd | 来源:发表于2018-10-08 23:47 被阅读0次


#include<stdio.h>

#include<iostream>

using namespace std;

int record[92][9], mark[9] ;

bool range[9], line1[17], line2[17];

namespace A {

int count = 0;

}

void tryToPut(int);

int main()

{

int i, testtimes, num;

scanf_s("%d", &testtimes);

for (i = 0; i <= 8; i++)

range[i] = true;

for (i = 0; i < 17; i++)

line1[i] = line2[2] = true;

tryToPut(1);

while (testtimes--) {

scanf_s("%d", &num);

for (i = 1; i <= 8; i++)

{

printf("%d", record[num - 1][i]);

}

printf("\n");

}

}

void tryToPut(int i)

{

if (i > 8) {//如果最后一个皇后被放置完毕,将当前解复制到全部解中;

for (int k = 1; k < 9; k++)

{

record[A::count][k] = mark[k];

}

A::count++;

}

for (int j = 1; j <= 8; j++) {

if (range[j] && line1[i + j] && line2[i - j + 9]) {//如果与前面的不冲突则将皇后放置此处

mark[i] = j;

range[j] = line1[i + j] = line2[i - j + 9] = false;

tryToPut(i + 1);

range[j] = line1[i + j] = line2[i - j + 9] = true;

}

}

}

查不出错有点奇怪’

相关文章

  • 2018-10-08八皇后问题三个一维数组ver

    #include #include using namespace std; int record[92][9],...

  • 八皇后问题(递归ver)

    因为老师提到所以去试试了 #include #include #include //为了g++编译...

  • 八皇后问题-一维数组

  • 11.数据结构—八皇后问题(回溯法)

    11.1 八皇后问题 八皇后问题是以国际象棋为背景的问题:有八个皇后(可以当成八个棋子),如何在 88 的棋盘中放...

  • 算法(03)回溯

    八皇后问题

  • 八皇后问题(N皇后问题)

    八皇后问题是一个经典的递归回溯问题。 描述 八皇后问题是在一个 8*8 的棋盘上放置皇后,要求其放置后满足同一行,...

  • 八皇后问题

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在...

  • 八皇后问题

    问题的类别是回溯(backtrace). 回溯通常用递归实现。回溯中注意边界问题,避免越界。同时,剪枝可以减少ca...

  • 八皇后问题

    课堂上老师讲了广度优先搜索算法后让课下实现下八皇后问题,就突发奇想了很多实现方法,这里只把我的实现方式和实现代码粘...

  • 八皇后问题

    问题 八皇后问题是一个古老而著名的问题,是试探法的典型例题。该问题由19世纪数学家高斯1850年手工解决。原题为在...

网友评论

      本文标题:2018-10-08八皇后问题三个一维数组ver

      本文链接:https://www.haomeiwen.com/subject/jipsaftx.html