leetcode-N-Queens 搜索
来源:互联网 发布:php命名空间的使用 编辑:程序博客网 时间:2024/04/29 23:47
问题
题目:[leetcode-51]
思路
dfs搜索即可,注意剪枝的条件。
注意,此时的搜索要恢复状态。
代码
class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>> ret; if( n < 1 ) return ret; vector<int> visited; dfs(n, 0, visited, ret); return ret; }private: void dfs(int n, int cur, vector<int>& visited, vector<vector<string>>& ans){ if( cur == n ){ vector<string> solution; for(int i = 0; i < n; ++i){ int loc = visited[i]; string s; for(int j = 0; j < n; ++j){ if( j == loc ) s.push_back('Q'); else s.push_back('.'); } solution.push_back(s); } ans.push_back( solution ); } else{ for(int k = 0; k < n; ++k){ if(valid( cur, k, visited )){ visited.push_back( k ); dfs( n, cur+1, visited, ans ); visited.pop_back(); } } } }// dfs bool valid( int x, int y, vector<int>& visited ){ int sz = visited.size(); for( int u = 0; u < sz; ++u ){ int v = visited[u]; // same column if( y == v ) return false; // same diag if( abs(x-u) == abs(y-v) ) return false; } return true; }// valid};
阅读全文
0 0
- leetcode-N-Queens 搜索
- 【LeetCode】N-Queens && N-Queens II
- leetcode N-Queens & N-Queens II
- Leetcode: N-Queens && N-Queens II
- 【Leetcode】【python】N-Queens/N-Queens II
- LeetCode: N-Queens II
- LeetCode: N-Queens
- LeetCode : N-Queens
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- leetcode 72: N-Queens
- LeetCode 38: N-Queens
- 【leetcode】N-Queens II
- 【leetcode】N-Queens
- LeetCode: N Queens II
- [LeetCode]N-Queens
- [LeetCode]N-Queens II
- [leetcode]N-Queens
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- Gym 101341H Perfect Ban 暴力模拟|签到
- 二叉树
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- 实现日夜间转换获取数据上下刷新(item.xml)
- leetcode-N-Queens 搜索
- DBCP数据库连接池的通用工具类(包括获取连接,初始化连接池,资源回收,通用增删改,单条查询,集合查询),该类依赖于mysql驱动和dbcp相关插件
- js-设计模式 单例模式(使用)
- 13. 岭回归
- iOS-NSRunLoop实现原理++
- 常用第三方接口
- Linux Shell脚本基础(一)
- 打开新世界的大门
- angular react vue对比