LeetCode || N-Queens
2015-09-07 12:13
459 查看
使用全排列的方法做的,效率超低的,104ms.
class Solution { public: bool CheckNQueuesOK(const vector<int>& queen) { int len = queen.size(); for(int i = 0;i<len;i++) { for(int j = i+1;j<len;j++) { if(queen[i] - queen[j] == i -j || queen[j] - queen[i] == i - j) return false; } } return true; } vector<string> ChangeQueenInt2String(const vector<int>& queen) { vector<string> q; for(int i = 0;i<queen.size();i++) { //设置第i行中的queen[i]为‘Q’,其他均为. string tmp; for(int j = 0;j<queen.size();j++) { if(queen[i] == j) tmp += 'Q'; else tmp += '.'; } q.push_back(tmp); } return q; } void Permutation(vector<int>& queen, int start, vector<vector<string>>& AllQueens) { if(start == queen.size()) { if(CheckNQueuesOK(queen)) { //save vector<string> q = ChangeQueenInt2String(queen); AllQueens.push_back(q); } } for(int i = start; i < queen.size();i++) { //swap int tmp = queen[i]; queen[i] = queen[start]; queen[start] = tmp; Permutation(queen, start+1, AllQueens); tmp = queen[i]; queen[i] = queen[start]; queen[start] = tmp; } } vector<vector<string>> solveNQueens(int n) { vector<int> queue; //初始化 for(int i = 0;i<n;i++) queue.push_back(i); vector<vector<string>> q; Permutation(queue, 0, q); return q; } };
相关文章推荐
- UITabBar 【标签条】自己的见解
- (不连续)最大公共子序列POJ 1458Common Subsequence
- UItableView 使用心得
- 【游戏科普】使用心理学法则创建优秀的用户界面
- quick-3.5 无法正常显示有混合纹理的csb文件
- UNIGUI:How to redirect and close session?
- UICollectionView基础
- MUI - sortable在mui.js前端框架不兼容的解决方案
- BlockingQueue深入分析
- VS2010 MFC的小Bug-ASSERT(ContinueModal());
- SOAPUI测试步骤(四)---The Script TestStep
- SOAPUI测试步骤(三)---Run TestCase
- SOAPUI测试步骤(二)---流量控制(Conditional Goto)
- SOAPUI测试步骤(一)——断言测试(Assertion TestStep)
- SOAPUI----安全扫描(Security Testing)
- UITableView 重用cell方法edequeueReusableCellWithIdentifier,出现错误
- UINavigationBar 【导航条】自己的见解
- soapui中文操作手册(九)----REST Sample Project
- web_custom_request应用示例
- soapui中文操作手册(八)----Web服务的功能测试案例