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

德阳网站优化南昌寻南昌网站设计

德阳网站优化,南昌寻南昌网站设计,wifi扩展器做网站,公司注册地址出租回溯算法理论基础 回溯和递归密不可分#xff0c;有回溯就有递归#xff0c;所谓回溯就是基于一个叉树#xff0c;可能是二叉树或者是三叉树#xff0c;从root节点开始深度优先搜索遍历节点#xff0c;当遍历到一个子节点时#xff0c;回溯到上一个根节点选择另外一个子…回溯算法理论基础 回溯和递归密不可分有回溯就有递归所谓回溯就是基于一个叉树可能是二叉树或者是三叉树从root节点开始深度优先搜索遍历节点当遍历到一个子节点时回溯到上一个根节点选择另外一个子节点继续进行遍历就叫做回溯。 回溯算法的标准解题模板viod backTracking(参数){ 结束条件 处理逻辑 递归 回溯 } PTA数独游戏 输入格式: The input test file will contain multiple cases. Each test case consists of a single line containing 81 characters, which represent the 81 squares of the Sudoku grid, given one row at a time. Each character is either a digit (from 1 to 9) or a period (used to indicate an unfilled square). You may assume that each puzzle in the input will have exactly one solution. The end-of-file is denoted by a single line containing the word “end”. 注意 本题输入数据量较大cin, getline可能会超时建议使用scanf。 输出格式: For each test case, print a line representing the completed Sudoku puzzle. 输入样例: 在这里给出一组输入。例如 .2738..1..1...6735.......293.5692.8...........6.1745.364.......9518...7..8..6534. ......52..8.4......3...9...5.1...6..2..7........3.....6...1..........7.4.......3. end输出样例: 在这里给出相应的输出。例如 527389416819426735436751829375692184194538267268174593643217958951843672782965341 416837529982465371735129468571298643293746185864351297647913852359682714128574936#includebits/stdc.h using namespace std;vectorvectorchar board(9,vectorchar(9)); bool isValid(int row, int col, char val, vectorvectorchar board) {for (int i 0; i 9; i) { // 判断行里是否重复if (board[row][i] val) {return false;}}for (int j 0; j 9; j) { // 判断列里是否重复if (board[j][col] val) {return false;}}int startRow (row / 3) * 3;int startCol (col / 3) * 3;for (int i startRow; i startRow 3; i) { // 判断9方格里是否重复for (int j startCol; j startCol 3; j) {if (board[i][j] val ) {return false;}}}return true; } bool backtracking(vectorvectorchar board) {for (size_t i 0; i board.size(); i) { // 遍历行for (size_t j 0; j board[0].size(); j) { // 遍历列if (board[i][j] ! .) continue;for (char k 1; k 9; k) { // (i, j) 这个位置放k是否合适if (isValid(i, j, k, board)) { board[i][j] k; // 放置kif (backtracking(board)) return true; // 如果找到合适一组立刻返回board[i][j] .; // 回溯撤销k}}return false; // 9个数都试完了都不行那么就返回false}}return true; // 遍历完没有返回false说明找到了合适棋盘位置了 }int main(){bool judgetrue;while(judge){for(int i0;i9;i){for(int j0;j9;j){char c;scanf(%c,c);if(ce){judgefalse;return 0;}board[i][j]c;}}if(backtracking(board)){for(int i0;i9;i){for(int j0;j9;j){printf(%c,board[i][j]);}}cout\n;}char c;scanf(%c,c);} } 我们使用回溯法来解决这个问题会有一个十叉树如果数独表这个地方是空格会尝试十个数字0~9如果十个数字都不符合则返回false如果有符合的数字则将board[i][j]改为这个数字进行递归如果递归函数的结果是true,则返回true。如果递归函数的结果是false,则回溯就是将board[i][j]重新置空。 在backTracking函数中为什么没有开头的结束条件呢。因为我们只需要有一条通路填满这个九宫格就可以。如果我们需要每个通路的内容则需要有结束条件来记录每个通路。同时我们的backTracking函数的返回值为bool这是一个判断条件在递归时代表
http://www.hkea.cn/news/14502423/

相关文章:

  • 数据库网站开发价格成都专业网站建设套餐
  • 外国企业网站模板免费下载ios认证 东莞网站建设
  • 网站建设亿玛酷信赖apache 安装 wordpress
  • 大型网站建设培训课件如何建设网站挣钱
  • 动漫网站设计方案网站建设音乐插件怎么弄
  • 四川宜宾网站建设自己做网站转发新闻违法么
  • 长沙正规官网建站搜狗营销
  • 个人网站做论坛一么多设计公司
  • Linux网站开发设计青海省住房和城乡建设厅门户网站
  • 网站建设与规划心得青岛做公司网站注册的多吗
  • 株洲网站建设全屋设计师需要学什么
  • 网站如何运营管理wordpress如何将文章链接地址
  • 网站制作类型江西人才网
  • 鄂州市住房和城乡建设部网站plone网站开发
  • 网站改域名备案吗wordpress问答悬赏功能
  • 网站建设基础方案可做百科资料参考的网站
  • 广州城市建设档案馆网站公司网站开发怎么做
  • 外贸网站产品广西水利电力建设集团网站
  • 旅游网站开发与建设论文页面设计要会什么
  • 单页面网站多少钱社保扣款怎么在社保网站上做》
  • 泰安网站建设制作服务浏览器网页打不开怎么解决
  • 甘肃网站建设专业定制深圳软件外包公司排名
  • 网站开发8080无法访问此页面页面设计收获心得
  • 网站推广的常用方法上海市中心
  • 贵州网站开发制作公司爱站网长尾词挖掘工具
  • 惠州网站建设技术托管wordpress 伪静态配置
  • 数据服务网站开发电脑制作网站的软件
  • 公司网站可直接购物支付国内高端品牌网站建设
  • 建网站的价格友情链接网自动收录
  • 企业电子商务网站建设教案自考本科报名官网入口