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
;
}
查看全文
相关阅读:
大三上寒假15天--第6天
大三上寒假15天--第5天
大三上寒假15天--第4天
大三上寒假15天--第3天
selenium(python)登录时账号密码错误提示语
selenium(python)用HTMLTestRunner导出报告(断言)信息的显示
Jmeter打开url时提示“请在微信客户端打开链接问题”
python(unittest)报告导出(二):使用 BeautifulReport导出
python(unittest)报告导出(一):使用HTMLTestRunner导出
selenium+python+unittest:一个类中只执行一次setUpClass和tearDownClass里面的内容(可解决重复打开浏览器和关闭浏览器,或重复登录等问题)
原文地址:https://www.cnblogs.com/yoran/p/1084530.html
最新文章
深入分析 Python 的垃圾回收机制
*args和**kwargs(不定长参数)
Python lambda表达式简单用法
ASCII、Unicode、GBK和UTF-8字符编码的区别与联系
复杂的数据结构解决方法
行内元素变成会计元素block和inline-block的区别
AJAX路径问题
除了时间戳,后端返回时间,前端的处理
JQ的双向数据绑定
201响应为什么进了AJAX error回调函数
热门文章
解决webstorm卡顿问题
前端开发规范
data对象转化成后端需要的json格式
开发微信小程序心得
大三上寒假15天--第12天
大三上寒假15天--第11天
大三上寒假15天--第10天
大三上寒假15天--第9天
大三上寒假15天--第8天
大三上寒假15天--第7天
Copyright © 2011-2022 走看看