leetcode - N-Queens
2013-11-22 23:01
323 查看
class Solution { public: void generateResults(vector<vector<string> > &rlts, int n, int index, int * cur, bool * flag1, bool * flag2, bool* flag3){ for (int i=0; i<n; i++){ int j = index+i; int k = index-i+n-1; if (flag1[i] || flag2[j] || flag3[k]){ continue; } flag1[i]=true; flag2[j]=true; flag3[k]=true; cur[index] = i; if (index==n-1){ vector<string> rlt; for (int p=0; p<n; p++){ string s=""; for (int q=0; q<n; q++){ if (cur[p]==q) s+='Q'; else s+='.'; } rlt.push_back(s); } rlts.push_back(rlt); } else generateResults(rlts,n,index+1,cur,flag1,flag2,flag3); flag1[i]=false; flag2[j]=false; flag3[k]=false; } } vector<vector<string> > solveNQueens(int n) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. vector<vector<string> > rlts; if (n<=0) return rlts; int * cur = new int ; bool * flag1 = new bool ; bool * flag2 = new bool[2*n-1]; bool * flag3 = new bool[2*n-1]; for (int i=0; i<n; i++){ flag1[i]=false; cur[i] = 0; } for (int i=0; i<2*n-1; i++){ flag2[i]=false; flag3[i]=false; } generateResults(rlts,n,0,cur,flag1,flag2,flag3); delete []cur; delete []flag1; delete []flag2; delete []flag3; return rlts; } };
相关文章推荐
- 配置 Hmail Squirrel Mail windows mssql
- Mysql创建视图 :View's SELECT contains a subquery in the FROM clause
- AsyncTask类与AsyncQueryHandler类的用法
- Qt MinGW 使用联合编译IncrediBuild
- UITextView ios7
- Qt MinGW 使用联合编译IncrediBuild
- uva 10746 - Crime Wave - The Sequel(费用流)
- bzoj 1005 组合数学 Purfer Sequence
- hibernate中Query的用法
- UIView动画暂定 继续
- 利用MARQUEE实现正在处理效果
- 内核request_mem_region 和 ioremap的理解
- 8Queue
- dwr的A request has been denied as a potential CSRF attack.错误
- BufferQueue/consumer/producer
- Coded UI
- 多线程编程3 - NSOperationQueue
- LinkIssue: Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or cor
- 让UIButton在按下时没有高亮效果
- HDOJ 4057 - Rescue the Rabbit 简单的AC自动机+状态压缩DP