八皇后问题(牛人非递归版)

 原文链接:《八皇后问题的非递归解法

     想不服都不行,实在是太牛的代码,诡异的算法思路,出神入化的STL技巧。。。

#include 
<
cmath
>

#include 

<
iostream
>

#include 

<
vector
>

#include 

<
algorithm
>


using
 
namespace
 std;

const
 
int
 MAX 
=
 
8
;

vector
<
int
>
 board(MAX);


void
 show_result()
{
    

for
(size_t i 
=
 
0
; i 
<
 board.size(); i
++
)
        cout

<<

(

<<
i
<<

,

<<
board[i]
<<

)

;
    cout

<<
endl;
}


int
 check_cross()
{
    

for
(size_t i 
=
 
0
; i 
<
 board.size()

1
; i
++
)
    {
        

for
(size_t j 
=
 i
+
1
; j 
<
 board.size(); j
++
)
        {
            

if
((j

i) 
==
 (size_t)abs(board[i]

board[j]))
                

return
 
1
;
        }
    }
    

return
 
0
;
}


void
 put_chess()
{
    

while
(next_permutation(board.begin(), board.end()))
    {
        

if
(
!
check_cross())
        {
            show_result();
        }
    }
}


int
 main()
{
    

for
(size_t i 
=
0
; i 
<
 board.size(); i
++
)
        board[i] 

=
 i;
    put_chess();
    

return
 
0
;
}

 

    原文作者:八皇后问题
    原文地址: https://www.cnblogs.com/phinecos/archive/2008/11/04/1326614.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞