码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode N-Queens II

时间:2015-03-11 12:55:52      阅读:119      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!