287. Find the Duplicate Number   hard

http://www.cnblogs.com/grandyang/p/4843654.html

51. N-Queens

http://blog.csdn.net/linhuanmars/article/details/20667175  http://www.cnblogs.com/grandyang/p/4377782.html

思路就是利用一个pos[row]=col来记录 行号:row,Queen在第col列。

再用一个index来记录当前递归到行号:index。

另外检查时候,只需要传入pos数组跟当前的位置 row,col。并且只需要从第0行倒第row-1行即可。

其中,判断当前行是不需要的,判断当前列跟斜线即可。斜线上直接利用斜率即可:(y2-y1)/(x2-x1)=正负1即可!

不过helper函数中第一个if语句没有 return竟然也能得到正确答案!我已惊呆!

class Solution {
public:
vector<vector<string>> solveNQueens(int n) {
vector<int> pos(n,-);
helper(res,,pos,n);
return res;
}
void helper(vector<vector<string>>& res,int index,vector<int>& pos,int len){
if(index==len){
vector<string> temp(len,string(len,'.'));
for(int i=;i<len;i++){
temp[i][pos[i]]='Q';
}
res.push_back(temp);
}
for(int col=;col<len;col++){
if(isCheck(pos,index,col)){
pos[index]=col;
helper(res,index+,pos,len);
pos[index]=-;
}
} }
bool isCheck(const vector<int>& pos,int row,int col){
for(int i=;i<row;i++)
if(col==pos[i]||abs(pos[i]-col)==abs(i-row))
return false;
return true;
}
private: vector<vector<string>> res;
};

最新文章

  1. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
  2. Windows 10 下mysql 安装后无法启动问题
  3. Marsedit 破解版下载(3.5.6)
  4. Linux课程实践一:Linux基础实践(基础操作)
  5. Docker实践(6)—CentOS7上部署Kubernetes
  6. MongoDB的C#驱动基本使用
  7. Spring.Net AOP实例
  8. jquery动态添加列表后样式失效解决方式
  9. 选择服务器OS标准
  10. SQL Server 2008数据库的一些基本概念 区、页、行
  11. uva 1401 dp+Trie
  12. MobaXterm
  13. LNMP环境下部署搭建wordpress
  14. [Swift]LeetCode243.最短单词距离 $ Shortest Word Distance
  15. CDN和智能DNS原理和应用 (原)
  16. C++基础学习一(基础之基础)
  17. MySQL或MariaDB忘记root密码
  18. Sitecore CMS中删除项目
  19. Sublime Text2中的快捷键一览表(Sublime 键盘快捷键大全 )
  20. EZOJ #224

热门文章

  1. curd 里url传输汉字验证错误问题解决方法
  2. Android菜鸟成长记8 -- 布局实践(微信界面的编写)
  3. C#批量插入数据到Sqlserver中的三种方式
  4. win8 系统无法正常安装.net framework 2.0和3.0框架如何解决
  5. SWT组件添加事件的四种方式
  6. Web应用定时任务实现
  7. opencv单目摄像机标定(二)
  8. Windows10
  9. mysql在linux下不区分大小写
  10. hadoop2.6源码导入mvn出错Missing tools.jar问题解决方案