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

摄影作品网站推荐国内最炫酷的网站

摄影作品网站推荐,国内最炫酷的网站,手机电脑网站 建站程序,让你有做黑客感觉的网站一#xff0c;有效的数独 1.题意 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 #xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。#x… 一有效的数独 1.题意 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。请参考示例图 注意 一个有效的数独部分已被填充不一定是可解的。只需要根据以上规则验证已经填入的数字是否有效即可。空白格用 . 表示。 2.解释 有效的数独这道题的其实是不需要用到递归的。这道题其实就是一个判断题要保证的的便是再一个9*9大小的二维数组里1~9这九个数字在每一行每一列每一个九宫格里面只出现了一次。如以下例子 黑实线分割开的就是一个九宫格。这个数独的每一行每一列出现的数据都是唯一的所以这个数独是有效的。 3.题目接口 class Solution { public:bool isValidSudoku(vectorvectorchar board) {} }; 4.解题思路及代码 要解决这道题我们首先就需要三个数组。这三个数组记录的便是我们是否在某一行某一列某一个九宫格里面是否又出现过某一个数字。在遍历过程中若出现了某一个数字便将这一行这一列这一个九宫格的第出现的数字的这一个位置标记为true。下次如果还会遍历同样的数字便返回false。如下代码 class Solution { public:bool row[9][10];bool col[9][10];bool grid[3][3][10];bool isValidSudoku(vectorvectorchar board) {for(int i 0;i9;i){for(int j 0;j9;j){if(board[i][j]!.)//当遍历到的数据不是.时便可以进入判断{int num board[i][j]-0;//将字符转换为数字if(row[i][num]||col[j][num]||grid[i/3][j/3][num])//当这个数字在行列九宫格任何一个位置上出现时便可以返回false{return false;}row[i][num] col[j][num] grid[i/3][j/3][num] true;//遍历过后将这一行这一列这个九宫格上的这个数字记录下来}}}return true;} }; 在这里大家可能比较疑惑的便是grid[i/3][j/3][num]了。其实这里便是将九宫格坐标化了当行数和列数都在1~3时对标的便是下标04~6对标的便是下标16~8对标的便是下标2。在一个9*9的格子里面有九个九宫格按照上面的分法下标分别是00),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)。 二解数独 1.题意 编写一个程序通过填充空格来解决数独问题。 数独的解法需 遵循如下规则 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。请参考示例图 数独部分空格内已填入了数字空白格用 . 表示。 2.解释 这一道题便是让我们来填入数字来解决数独问题了。上面的有效的数独不需要用到递归的方式来解决但是这道题便要使用递归来解决了。 3.题目接口 class Solution { public:void solveSudoku(vectorvectorchar board) {} }; 4.解题思路及代码 先将代码写出再来解释代码 class Solution { public:bool row[9][10];bool col[9][10];bool grid[3][3][10];void solveSudoku(vectorvectorchar board) {for(int i 0;i9;i)//先将数独里面出现的数字标记下来{for(int j 0;j9;j){if(board[i][j]!.){int num board[i][j]-0;row[i][num] col[j][num] grid[i/3][j/3][num] true;}}} dfs(board); }bool dfs(vectorvectorcharboard){for(int i 0;i9;i){for(int j 0;j9;j){if(board[i][j] .){for(int num 1;num9;num){if(!row[i][num]!col[j][num]!grid[i/3][j/3][num]){board[i][j] num0;row[i][num] col[j][num] grid[i/3][j/3][num] true;if(dfs(board)) return true;board[i][j] .;//当走到这里时便是因为这一层填的数字的不到结果所以要将这个位置的值改回.标记改为false。row[i][num] col[j][num] grid[i/3][j/3][num] false;}}return false;//当遍历到的这一个格子九个数字都不能填时便返回false调整上一层的值}}}return true;} }; 在这一道题里面最让人难以理解的便是没有递归出口因为递归必须要有出口才能返回到上一层。但是这道题的代码里面似乎没有是吧。其实不是的这道题只是没有显示的写出递归出口。它是使用两个for循环来隐式的作为递归出口了当一个棋盘被遍历完了以后或者不能得到结果时便会返回到上一层重新操作。
http://www.ho-use.cn/article/10822257.html

相关文章:

  • 企业网站空间多大合适wordpress is
  • 建设网站要先给钱才能做网站搭建文案
  • 网站服务器 免费wordpress渗透
  • 灰色网站设计网络推广引流软件
  • 怎么快速开发一个网站有关网络技术的网站
  • 动易论坛官方网站福建省建设工程质量安全网站
  • 罗湖商城网站建设找哪家公司比较安全旅游网站项目策划书
  • 做网站设计的公司排名房屋装修设计图片欣赏
  • 网站建设交接表wordpress主题 免费 自媒体
  • 天台城乡规划建设局网站seo网站的优化流程
  • 怎么做淘宝客网站和APP软文之家
  • 犀牛云做网站怎么这么贵wordpress如何导出数据
  • 怎么破解网站后台做网站应达到什么效果
  • 商务网站需求说明书网页设计与制作课程评价
  • 陕西恒立建设集团网站自助建站平台免费
  • 网站引量方法只做百度移动端网站可以吗
  • 建设网站500错误建设工程信息网站
  • 个人网站二级域名做淘宝客网站建设流程的过程
  • 为什么建设网站asp评价网站开发文档
  • 企业网站用个人备案微信公众平台怎么做微网站吗
  • 网站 建设实验小结小程序自己制作流程
  • 公司网站制作投标厦门比较有名的设计公司
  • 网站是怎么做专业做俄语网站建设
  • 网站管理后台源码刚做的网站上线后收不到了
  • 陶瓷网站建设网页设计网站建设过程报告
  • 中小企业网站的建设实践报告最新热搜新闻
  • 纵横天下网站开发做视觉影像网站用什么软件系统
  • 如何进行网站建设分析石家庄城乡建设厅网站
  • 那里有制作网站公司百度教育小程序入口
  • 在意派建设好网站后室内设计网站免费素材