首页 > 其他 > 详细

LeetCode N-Queens II

时间:2015-03-11 12:55:15      阅读:250      评论:0      收藏:0      [点我收藏+]

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

技术分享

题意:还是n皇后问题。

思路:时间复杂度要求高了,还是每行每行的放,再开一个三维的标记数组,y-x代表了主对角线,y+x代表了负对角线。

class Solution {
public:
    int ans;
    int vis[3][1000];

    void dfs(int cur, int tar) {
        if (cur == tar) {
            ans++;
            return;
        }

        for (int i = 0; i < tar; i++) {
            if (!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+tar]) {
                vis[0][i] = vis[1][cur+i] = vis[2][cur-i+tar] = 1;
                dfs(cur+1, tar);
                vis[0][i] = vis[1][cur+i] = vis[2][cur-i+tar] = 0;
            }
        }
    }

    int totalNQueens(int n) {
        ans = 0;
        memset(vis, 0, sizeof(vis));
        dfs(0, n); 
        return ans;
    }
};



LeetCode N-Queens II

原文:http://blog.csdn.net/u011345136/article/details/44197079

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