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

网站建设帮助中心购物网站功能模块说明

网站建设帮助中心,购物网站功能模块说明,wordpress 首页背景音乐,广告视频网站一、题目 按照国际象棋的规则#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n #xff0c;返回所有不同的 n 皇后问题 的解决方案…一、题目 按照国际象棋的规则皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上并且使皇后彼此之间不能相互攻击。 给你一个整数 n 返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。 来源力扣LeetCode 链接https://leetcode.cn/problems/n-queens/description/ 二、C解法 我的思路及代码 采用回溯的思想。这里需要一个判断的函数 isValid 来处理当前位置是否是可选的位置。每一次选择的时候都会前进一行然后在当前行中选择可用的列。如果这个列是可用的那么就可以选择此路径然后继续后面的回溯如果不可用则继续往下找。本质是一个全排列的问题。由于我们的方式是从一行一行的往下找那么在 isValid 中就不必判定左下角和右下角的合理情况这必然是可选的。 class Solution { public:vectorvectorstring ans;bool isValid(int row,int col,vectorstring temp){int rowTemp row;int colTemp col;//判断列有没有棋子for(int i0;itemp.size();i){if(temp[i][col] Q)return false;}//判断左上有没有棋子for(;rowTemp0colTemp0;rowTemp--,colTemp--){if(temp[rowTemp][colTemp] Q)return false;}//判断右上有没有棋子for(rowTemp row,colTemp col;rowTemp0colTemptemp.size();rowTemp--,colTemp){if(temp[rowTemp][colTemp] Q)return false;}return true;}void backtrance(vectorstring temp,int row){if(rowtemp.size()){ans.push_back(temp);return;}for(int col0;coltemp.size();col){if(isValid(row,col,temp)){temp[row][col] Q;backtrance(temp,row1);temp[row][col] .;}}}vectorvectorstring solveNQueens(int n) {vectorstring temp(n,string(n,.));backtrance(temp,0);return ans;} };时间复杂度O(N!)其中 N 是皇后数量空间复杂度O(N)其中 N 是皇后数量。空间复杂度主要取决于递归调用层数、记录每行放置的皇后的列下标的数组以及三个集合递归调用层数不会超过 N数组的长度为 N每个集合的元素个数都不会超过 N 官方参考代码 方法一基于集合的回溯 采用了集合的方式来存储各个线上皇后的情况本质还是回溯算法。 class Solution { public:vectorvectorstring solveNQueens(int n) {auto solutions vectorvectorstring();auto queens vectorint(n, -1);auto columns unordered_setint();auto diagonals1 unordered_setint();auto diagonals2 unordered_setint();backtrack(solutions, queens, n, 0, columns, diagonals1, diagonals2);return solutions;}void backtrack(vectorvectorstring solutions, vectorint queens, int n, int row, unordered_setint columns, unordered_setint diagonals1, unordered_setint diagonals2) {if (row n) {vectorstring board generateBoard(queens, n);solutions.push_back(board);} else {for (int i 0; i n; i) {if (columns.find(i) ! columns.end()) {continue;}int diagonal1 row - i;if (diagonals1.find(diagonal1) ! diagonals1.end()) {continue;}int diagonal2 row i;if (diagonals2.find(diagonal2) ! diagonals2.end()) {continue;}queens[row] i;columns.insert(i);diagonals1.insert(diagonal1);diagonals2.insert(diagonal2);backtrack(solutions, queens, n, row 1, columns, diagonals1, diagonals2);queens[row] -1;columns.erase(i);diagonals1.erase(diagonal1);diagonals2.erase(diagonal2);}}}vectorstring generateBoard(vectorint queens, int n) {auto board vectorstring();for (int i 0; i n; i) {string row string(n, .);row[queens[i]] Q;board.push_back(row);}return board;} };时间复杂度O(N!)其中 N 是皇后数量空间复杂度O(N)其中 N 是皇后数量。空间复杂度主要取决于递归调用层数、记录每行放置的皇后的列下标的数组以及三个集合递归调用层数不会超过 N数组的长度为 N每个集合的元素个数都不会超过 N
http://www.hkea.cn/news/14468707/

相关文章:

  • 那些网站百度抓取率比较高做商城网站要哪些流程
  • 网站设计职业工作室平台推广策划方案
  • 免费创建网站的软件网页设计导航栏代码怎么写
  • 网站 服务器 域名图书馆网站建设的要求
  • 网站建设评分标准php网站插件删除或添加
  • 普通网站要什么费用微信公众号小程序有哪些功能
  • 什么网站 是cms系统下载为学校网站建设
  • 江苏盐城有做淘宝网站的吗一个软件开发需要多少钱
  • 流量很大的网站平面设计兼职
  • 新浪云存储 wordpress遵义seo网络优化招聘
  • 常设中国建设工程法律网站快车app官方下载
  • 饭店网站模板梁志天设计公司官网首页
  • 宝安区网站建设东莞网站设计费用
  • 科技类网站模板包头市网站建设
  • 微信免费建站广州有哪些建筑公司
  • 旅游网站开发答辩ppt门头设计效果图大全
  • wordpress 不同站点中国的网站域名
  • 公司做网站怎么推广视频制作的基本流程是什么
  • 丹徒做网站有没有专门做外贸的网站
  • 学网站开发需要多久想建设个网站卖东西
  • 记事本做的网站链接怎么装饰wordpress aike主题
  • 专业网站优化排名wordpress登录后才允许浏览
  • 来宾住房与城乡建设网站微信网站开发模板
  • 如何帮网站长长沙网站制作
  • 网站后台免费模板下载互联网上市公司排名
  • 怎么用文本做网站天津住建网官网
  • 哪里建设网站好国内优秀网站案例
  • 建设手机网站包括哪些费用东莞网站优化的具体方案
  • 网络营销的培训课程上海百度seo牛巨微
  • 上海网站建设升中国域名注册