当前位置: 首页 > wzjs >正文

麻章手机网站建设建站软件可以不通过网络建设吗

麻章手机网站建设,建站软件可以不通过网络建设吗,网站建设平台怎么做,蔡家坡网站开发目录 题目描述 方法一、回溯每次判断是否合法 方法二、回溯哈希 方法三、回溯位运算 题目描述 51. N-Queens 方法一、回溯每次判断是否合法 class Solution {vector<vector<string>> res;vector<string> chessboard; public:vector<vector<strin…

目录

题目描述

方法一、回溯+每次判断是否合法

方法二、回溯+哈希

方法三、回溯+位运算


题目描述

51. N-Queens

方法一、回溯+每次判断是否合法

class Solution {vector<vector<string>> res;vector<string> chessboard;
public:vector<vector<string>> solveNQueens(int n) {chessboard.resize(n,string(n,'.'));backtrack(n,0);return res;}void backtrack(int n,int row){if(row == n){res.push_back(chessboard);return;}for(int col = 0;col < n;col++){if(valid(row,col,n)){chessboard[row][col] = 'Q';backtrack(n,row+1);chessboard[row][col] = '.';}}}bool valid(int row,int col,int n){for(int i = row-1;i>=0;i--){if(chessboard[i][col] == 'Q')return false;}for(int i = row-1,j = col-1;i>=0&&j>=0;i--,j--){if(chessboard[i][j] == 'Q')return false;}for(int i = row-1,j = col+1;i>=0&&j<n;i--,j++){if(chessboard[i][j] == 'Q')return false;}return true;}
};

方法二、回溯+哈希

记录棋盘上已经处于攻击范围的直线,将判断能否摆放新皇后的时间复杂度降为O(1)。

class Solution {vector<vector<string>> res;vector<string> chessboard;vector<bool> columns;vector<bool> diagonals1;vector<bool> diagonals2;
public:vector<vector<string>> solveNQueens(int n) {chessboard.resize(n,string(n,'.'));columns.resize(n,false);//分别有2n-1条正斜线和反斜线diagonals1.resize(2*n-1,false);diagonals2.resize(2*n-1,false);backtrack(n,0);return res;}void backtrack(int n,int row){if(row == n){res.push_back(chessboard);return;}for(int col = 0;col < n;col++){if(columns[col])continue;int diag1 = row+col;if(diagonals1[diag1])continue;int diag2 = row-col+(n-1);if(diagonals2[diag2])continue;columns[col] = true;diagonals1[diag1] = true;diagonals2[diag2] = true;chessboard[row][col] = 'Q';backtrack(n,row+1);chessboard[row][col] = '.';columns[col] = false;diagonals1[diag1] = false;diagonals2[diag2] = false;}}
};

方法三、回溯+位运算

方法二中的哈希表可以改用位运算,节省空间开销。

class Solution {vector<vector<string>> res;vector<string> chessboard;int columns;   //第i个比特位为0表示第i列能放,为1表示不能放int diagonals1;//第i个比特位为0表示第i条反斜线能放,为1表示不能放int diagonals2;//正斜线的情况
public:vector<vector<string>> solveNQueens(int n) {chessboard.resize(n,string(n,'.'));columns = 0;//分别有2n-1条正斜线和反斜线,题目保证n<=9,那么2n-1<=17,int类型一共有32个比特位够用diagonals1 = 0;diagonals2 = 0;backtrack(n,0);return res;}void backtrack(int n,int row){if(row == n){res.push_back(chessboard);return;}for(int col = 0;col < n;col++){if(columns &(1<<col))continue;int diag1 = row+col;if(diagonals1 &(1<<diag1))continue;int diag2 = row-col+(n-1);if(diagonals2 &(1<<diag2))continue;columns    |= (1<< col);diagonals1 |= (1<< diag1);diagonals2 |= (1<< diag2);chessboard[row][col] = 'Q';backtrack(n,row+1);chessboard[row][col] = '.';columns    &= (~(1<< col));diagonals1 &= (~(1<<diag1));diagonals2 &= (~(1<<diag2));}}
};
http://www.dtcms.com/wzjs/274540.html

相关文章:

  • 沧州做网站的seo变现培训
  • 高校网站建设前景做网络推广怎么找客户
  • 网站登记备案查询万网官网入口
  • 建造师培训网校seo排名技巧
  • 做网站备案什么意思游戏推广平台
  • 常州网站建设方案优化seo
  • 江阴网站制作找索引擎seo
  • 赌博假网站这么做点击器 百度网盘
  • 服务器做网站用什么环境好厦门网络推广哪家强
  • 贵阳市住房城乡建设局八大员网站优化快速排名教程
  • 垂直电商网站如何做内容运营百度在线
  • 动态网站建设教程线上推广网络公司
  • 如何做海外淘宝网站sem推广竞价托管
  • 静态网站开发工具有哪些中国站长站官网
  • 运城 网站 建设 招聘百度公司电话热线电话
  • paypal网站集成北京seo外包公司要靠谱的
  • 网站建设一般多少品牌seo如何优化
  • 网站日志怎么做百度助手免费下载
  • 移动网站开发手机网站模板
  • 马云做黄页网站时候java成品网站
  • 网络宣传网站建设制作百度服务中心电话
  • 小网站 收入百度快照提交入口
  • flash企业网站站长工具海角
  • 网站开发建设是否需要经营许可网站seo是啥
  • 餐饮网站制作代运营公司是怎么运营的
  • 纺织面料做哪个网站好陕西网络推广公司
  • 柳州市城市建设局网站网站建设方案开发
  • 什么是网站的主页梅花seo 快速排名软件
  • 珠海市手机网站建设公司微信营销的方法
  • 关于营销方面的网站济南seo网络优化公司