a*****u 发帖数: 1712 | | C*****E 发帖数: 2679 | 2 理论上,这个就是NP,DFS搜索就是最好的解法。
实际上有很多减枝的tricks,可以搜索一下。 | r*********n 发帖数: 4553 | 3 看了下wiki,貌似比较好的方法是先产生permutation(行,列就已经满足了),然后再
检查对角线是否collide.
vector vec({0,.....,7})
do{
if(checkdiagonal(vec)) return vec;
}while{next_permutation(vec.begin(), vec.end())}
wiki上面说上面的方法还可以优化:用partial permutation,但是我没看明白。 | s*****r 发帖数: 108 | | s*****r 发帖数: 108 | |
|