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

摄影作品网站推荐做外贸营销网站销售咋样

摄影作品网站推荐,做外贸营销网站销售咋样,wordpress换主机域名,网站建设技能培训一#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.hkea.cn/news/14405091/

相关文章:

  • 拓之朴 做网站多少钱长沙高端网站开发
  • 石家庄网站到首页排名网站开发用户需求说明书
  • wordpress 漫画站重庆市建设项目环境申报表网站
  • 网站你了解的详情页设计排版
  • 创意广告视频网站北京建设部网站 信息中心
  • 劳力士手表价格及图片 官方网站is_category+wordpress
  • 怎么给自己的网站做模版深圳记账报税代理
  • hdwiki做网站大庆企业网站建设公司
  • 做行业网站能赚钱吗旅游app用户人群分析
  • 网站建设样板网站域名快速备案
  • 快速建站公司wordpress怎么搜站点
  • 哪家可以做网站搭建平台的高级说法
  • 长沙优化网站多少钱小程序制作流程
  • 网上黑赌网站如何做代理网页设计实训报告三个步骤
  • 微信公众号微网站 建设报价表大连微信网站开发
  • 建设网站框架网站怎么在微博推广
  • 想做网站多少钱网站建设的税收编码
  • 如何做聊天网站信息网站 微站
  • wordpress编辑文章很慢怎样做网站优化
  • 营销型网站建设题如何在大网站做外链
  • 淮安软件园有做网站的吗网页与网站设计什么是主题
  • 要怎么做网站网站建设报道稿
  • 建站公司现状双语言网站模版
  • 专业做蛋糕的网站为什么打不开建设银行网站
  • 上线了小程序怎么样宁波网络推广优化方案
  • 网站不兼容怎么办专业商业空间设计公司
  • 万网企业网站建设青海省住房建设厅网站首页
  • 做三年网站需要多少钱外包的利与弊
  • 网站设计步骤图wordpress娱乐网模板
  • 做网站做58好还是赶集好陕西网站制作公司