zoukankan
html css js c++ java
用c++实现的8皇后问题
最近弄弄一些经典的算法,八皇后是其一。
在8*8的棋盘上摆8个皇后,使任2皇后不在同一行、列、对角线上,有几种摆法?
可以扩展到N皇后。
#include
<
iostream
>
#include
<
string
>
using
namespace
std;
#define
NUM 8
char
cache[NUM][NUM]
=
{
0
}
;
void
queen(
int
row,
int
max)
{
//
依次放置在列上
for
(
int
i
=
0
; i
<
max;
++
i)
{
//
清空当前行
memset(cache[row],
'
x
'
, max);
bool
fHas
=
false
;
//
判断同一列
for
(
int
irow
=
0
; irow
<
row;
++
irow)
{
if
(cache[irow][i]
==
'
o
'
)
{
fHas
=
true
;
break
;
}
//
对角线是否有皇后
int
icol
=
i;
if
(icol
+
(row
-
irow)
<
max)
{
if
(cache[irow][icol
+
(row
-
irow)]
==
'
o
'
)
{
fHas
=
true
;
break
;
}
}
if
(icol
-
(row
-
irow)
>=
0
)
{
if
(cache[irow][icol
-
(row
-
irow)]
==
'
o
'
)
{
fHas
=
true
;
break
;
}
}
}
if
(fHas)
continue
;
cache[row][i]
=
'
o
'
;
if
(row
<
max
-
1
)
queen(row
+
1
, max);
if
(row
==
max
-
1
)
{
for
(
int
i
=
0
; i
<
max;
++
i)
{
for
(
int
j
=
0
; j
<
max;
++
j)
{
cout
<<
cache[i][j]
<<
"
"
;
}
cout
<<
endl;
}
cout
<<
endl;
}
}
}
int
main(
int
argc,
char
*
argv[])
{
queen(
0
, NUM);
return
0
;
}
查看全文
相关阅读:
【POJ】[1703]Find them, Catch them
【杭电】[2717]Catch That Cow
【杭电】[2717]Catch That Cow
【杭电】[1716]排列2
【杭电】[1716]排列2
【杭电】[2084]数塔
【杭电】[2084]数塔
【杭电】[1003]Max Sum
【杭电】[1003]Max Sum
[leetcode]117. Populating Next Right Pointers in Each NodeII用next填充同层相邻节点
原文地址:https://www.cnblogs.com/yoran/p/1084530.html
最新文章
bash
/etc/shells
给已经开启的容器添加端口映射
在容器中安装的服务启动不了
Python--day20--序列化模块
Python--day19--sys模块
Python--day19--os模块
Python--day19--random模块
Python--day19--time模块
Python--day19--collections模块
热门文章
C语言源程序的打开方式
手机号码界面输入数字查看手机信息
手机号码界面输入数字查看手机信息
Kotlin来源
Kotlin来源
Kotlin视频
Kotlin视频
IntelliJ Idea 2017 免费激活 WebStorm 2017激活
把SVN添加到windows服务
【POJ】[1703]Find them, Catch them
Copyright © 2011-2022 走看看