八皇后代码C语言版本
2024-08-25 06:09:38
y = x + b -> y-x = b 主对角线上,行下标与列下标之差相等
y = -x + b -> y+x = b 副对角线上,行下标与列下标之和相等
主对角线共有15条
副对角线共有15条
列有8条
每个皇后占位以后,相当于占用一条主对角线,一条副对角线和一条列
定义三个占位buf,分别为列,主对角线,副对角线。
b可以作为占位符下标索引
副对角线的b可能是负值
#include <stdio.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h> typedef struct{
int m_s32Count;
unsigned char m_u8ColBuf[8];
unsigned char m_u8MainDiagonalBuf[15];
unsigned char m_u8SubDiagonalBuf[15];
unsigned char m_u8QueenBuf[8][8];
}StQueenInfo; void PrintQueen(const StQueenInfo *p_stQueenInfo)
{
int i,j;
for(i = 0; i < 8; i++)
{
for(j = 0; j < 8; j++)
{
if(p_stQueenInfo->m_u8QueenBuf[i][j] == 1)
{
printf("X ");
}
else
{
printf("- ");
}
}
printf("\n");
}
printf("\n");
} void FindQueen(int p_s32RowIdx, StQueenInfo *p_stQueenInfo)
{
int j; if(p_s32RowIdx > 7)
{//前8行满足,第九行结束
p_stQueenInfo->m_s32Count++;
printf("%d\n", p_stQueenInfo->m_s32Count);
PrintQueen(p_stQueenInfo);
return;
}
for(j = 0; j < 8; j++)
{
if(p_stQueenInfo->m_u8ColBuf[j] != 1
&& p_stQueenInfo->m_u8MainDiagonalBuf[p_s32RowIdx+j] != 1
&& p_stQueenInfo->m_u8SubDiagonalBuf[0-p_s32RowIdx+j +7] != 1)
{
p_stQueenInfo->m_u8ColBuf[j] = 1;
p_stQueenInfo->m_u8MainDiagonalBuf[p_s32RowIdx+j] = 1;
p_stQueenInfo->m_u8SubDiagonalBuf[0-p_s32RowIdx+j +7] = 1;
p_stQueenInfo->m_u8QueenBuf[p_s32RowIdx][j] = 1;
FindQueen(p_s32RowIdx+1, p_stQueenInfo);
p_stQueenInfo->m_u8ColBuf[j] = 0;
p_stQueenInfo->m_u8MainDiagonalBuf[p_s32RowIdx+j] = 0;
p_stQueenInfo->m_u8SubDiagonalBuf[0-p_s32RowIdx+j +7] = 0;
p_stQueenInfo->m_u8QueenBuf[p_s32RowIdx][j] = 0;
}
}
} int main()
{
StQueenInfo l_stQueenInfo={};
FindQueen(0, &l_stQueenInfo); return 0;
}
最新文章
- CSS3 Loading(加载)动画效果
- Python标准模块--linecache
- js中的forEach
- Oracle存储过程写法
- (转)颜色渐变CSS
- Unity3d:延迟加载ScrollView的内容
- js取单选按钮,复选按钮的值
- Spring与SpringMVC的容器关系分析
- HTML&;JS笔记(1)
- zoj 3822 Domination(2014牡丹江区域赛D称号)
- 同一台电脑使用 gitlab 和 github 配置
- ISLR系列:(2)分类 Logistic Regression &; LDA &; QDA &; KNN
- 再谈HTTP2性能提升之背后原理—HTTP2历史解剖
- VM虚拟机ubantu自适应屏幕大小
- docker学习笔记二
- Angular4 —— NgModule
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
- [DIOCP3-IocpTask说明书]基于IOCP引擎的多线程任务的投递和回调处理单元
- 使用ABP框架踩过的坑系列3
- 20155304 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计
热门文章
- FTP安装及使用
- 《SVDNet for Pedestrian Retrieval》理解
- Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型
- Thread类的常用方法_获取线程名称的方法和设置线程名称的方法
- ClickHouse(04)如何搭建ClickHouse集群
- APISpace 让你快速获取名言警句
- Template -「网络流 &; 二分图」
- 同时安装py2和py3-安装多版本python
- linux 安装 apache+mysql+php
- 小白之Python基础(四)