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


#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;

}

}

}

查不出错有点奇怪’

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    医学工程与科学园地阅读 4,965评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,734评论 0 2
  • 在忙碌中又一周流逝了。这一周的情绪标签是极度焦虑和紧张,这种感觉虽然充实,但是身体消耗还是有点大,好在马上...
    欧拉来看看阅读 1,040评论 0 0
  • 前些天师兄离校,让我去他宿舍清理清理。看有哪些我有需要的东西可以拿过去;我说有没有一些书,于是就这样,撒哈拉沙漠与...
    一骑绝尘_阅读 4,638评论 0 0
  • 【1能量】 评判 智慧是对于事物的本质以及事实真相的领悟力; 所谓教育,便是在自己以及他人身上唤醒这种能力。 ...
    1空间阅读 780评论 0 1