首页 > 其他 > 详细

52. N-Queens II

时间:2016-10-17 07:19:47      阅读:223      评论:0      收藏:0      [点我收藏+]

哈哈和51是一毛一样的backtracking,唯一区别就是比起每次找到最后生成一个板子,就是记个数,非常不要脸的发两篇

 

 1     int cnt = 0;
 2     
 3     public int totalNQueens(int n) {
 4         int[] queuePos = new int[n];
 5         queue(queuePos, 0);
 6         return cnt;
 7     }
 8     
 9     private boolean canPlace(int[] queuePos, int row, int col) {
10         for(int i = 0; i < row; i++) {
11             if(queuePos[i] == col) {
12                 return false;
13             }
14             if(Math.abs(i - row) == Math.abs(queuePos[i] - col)) {
15                 return false;
16             }
17         }
18         return true;
19     }
20     
21     private void queue(int[] queuePos, int row) {
22         int n = queuePos.length;
23         if(row == n) {
24             cnt++;
25             return;
26         }
27         for(int i = 0; i < n; i++) {
28             if(canPlace(queuePos, row, i)) {
29                 queuePos[row] = i;
30                 queue(queuePos, row + 1);
31             }
32         }
33     }

 

52. N-Queens II

原文:http://www.cnblogs.com/warmland/p/5968378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!