N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
#include<iostream> #include<vector> #include<cmath> using namespace std; class Solution { public: int res=0; int totalNQueens(int n) { vector<int> state(n,-1); helper(n,0,state); return res; } void helper(int n,int start,vector<int> &state) { if(start==n) { res++; return; } int i; for(i=0; i<n; i++) { if(isValid(state,start,i)) { state[start]=i; helper(n,start+1,state); state[start]=-1; } } } bool isValid(vector<int> &state,int row,int col) { int i; for(i=0; i<row; i++) if(state[i]==col||row-i==abs(state[i]-col)) return false; return true; } }; int main() { Solution s; cout<<s.totalNQueens(4)<<endl; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步