Leetcode---N-Queens II

来源:互联网 发布:wget和yum 编辑:程序博客网 时间:2024/06/17 06:58

N皇后问题,求数量,比记录轨迹简单。


int N;int sum;vector<vector<int> > m;bool check(int row,int column){            if(row==1) return true;            int i,j;            for(i=0;i<=row-2;i++){                if(m[i][column-1]==1) return false;            }            i = row-2;            j = i-(row-column);            while(i>=0&&j>=0){                if(m[i][j]==1) return false;                i--;                j--;            }            i = row-2;            j = row+column-i-2;            while(i>=0&&j<=N-1){                if(m[i][j]==1) return false;                i--;                j++;            }            return true;        }void dfs(int level){    if(level==N){        sum++;    }    else{        for(int i=0;i<N;i++){            if(check(level+1,i+1)){                m[level][i]=1;                dfs(level+1);                m[level][i]=0;            }        }    }}int totalNQueens(int n) {    N=n;    sum=0;    for(int i=0;i<n;i++){            vector<int> a(n,0);            m.push_back(a);        }    dfs(0);    return sum;}




0 0
原创粉丝点击