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

德惠市城乡建设局网站怎么请专业拓客团队

德惠市城乡建设局网站,怎么请专业拓客团队,佛山专业的网站建设,网站 如何做用户统计目录 1.字母大小写全排列1.题目链接2.算法原理详解3.代码实现 2.优美的排列1.题目链接2.算法原理详解3.代码实现 3.N 皇后1.题目链接2.算法原理详解3.代码实现 1.字母大小写全排列 1.题目链接 字母大小写全排列 2.算法原理详解 本题逻辑与子集大致相同 思路一:每…

目录

  • 1.字母大小写全排列
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现
  • 2.优美的排列
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现
  • 3.N 皇后
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现


1.字母大小写全排列

1.题目链接

  • 字母大小写全排列

2.算法原理详解

  • 本题逻辑与子集大致相同
    • 思路一:每次盯着一个字符,变或是不变
      • 全局变量
        • string path
        • vector<string> ret
      • DFS()设计
        • 函数头void DFS(string, pos)
          • pos:下一层递归要选的元素
        • 函数体
          • 字母可能变/不变,数字一定不需要变
        • 递归出口pos == nums.size()
      • 回溯:变完函数返回时需要回溯
        请添加图片描述

3.代码实现

class Solution 
{string path;vector<string> ret;
public:vector<string> letterCasePermutation(string s) {DFS(s, 0);return ret;}void DFS(string& s, int pos){if(pos == s.size()){ret.push_back(path);return;}char ch = s[pos];// 不改变path += ch;DFS(s, pos + 1);path.pop_back(); // 回溯,恢复现场// 改变if(ch < '0' || ch > '9'){ch = Change(ch);path += ch;DFS(s, pos + 1);path.pop_back(); // 回溯,恢复现场}}char Change(char ch){if(ch >= 'a' && ch <= 'z'){ch -= 32;}else{ch += 32;}return ch;}
};

2.优美的排列

1.题目链接

  • 优美的排列

2.算法原理详解

  • 思路:对每个位置挨个尝试填入数字
    • 全局变量
      • int ret
      • vector<bool> check -> 剪枝
    • DFS()设计void DFS(pos, n)
    • 剪枝
      • 之前用过的数字不再使用
      • 不符合情况的不填入
    • 回溯:每层递归返回时回溯
      请添加图片描述

3.代码实现

class Solution 
{int ret = 0;vector<bool> check;
public:int countArrangement(int n) {check.resize(n + 1, false);DFS(1, n);return ret;}void DFS(int pos, int n){if(pos == n + 1){ret++;return;}for(int i = 1; i <= n; i++){if(!check[i] && (i % pos == 0 || pos % i == 0)){check[i] = true;DFS(pos + 1, n);check[i] = false; // 回溯,恢复现场}}}
};

3.N 皇后

1.题目链接

  • N 皇后

2.算法原理详解

  • 本题可以学习二维数组判断行列、主副对角线是否放有数据

  • 思路:在每一行找合适的列放置皇后,即每次枚举都是枚举一行
    - DFS()设计:void DFS(row)

    • 决策树
      请添加图片描述
  • 如何剪枝?-> 当前这个位置,能否放上皇后?

    • 无脑四个循环判断行列、主副对角线 -> ×
    • 类似哈希表的策略,需要一定数学理解
      • 不需要剪枝,收递归限制
      • bool checkCol[n] -> 判断
        • 对应下标表示每列是否放置过皇后
      • bool checkDig1[2 * n] -> 主对角线
        • y = x + b -> y - x = b -> b可以唯一标识一个对角线
        • y - x + n = b + n -> 两边加上一个固有偏移量防止下标出现负数
      • bool checkDig2[2 * n] -> 副对角线
        • y = -x + b -> y + x = b -> b可以唯一标识一个对角线
        • 副对角线不需要固定偏移量,因为副对角线的纵截距都大于0
          请添加图片描述

3.代码实现

class Solution 
{int _n = 0;vector<bool> checkCol;vector<bool> checkDig1;vector<bool> checkDig2;vector<vector<string>> ret;vector<string> path;
public:vector<vector<string>> solveNQueens(int n) {_n = n;checkCol.resize(n, false);checkDig1.resize(2 * n, false);checkDig2.resize(2 * n, false);path.resize(n, string(n, '.'));DFS(0);return ret;}void DFS(int row){// 递归出口if(row == _n){ret.push_back(path);return;}// 对于每一行,枚举每一列for(int i = 0; i < _n; i++){// 剪枝if(!checkCol[i] && !checkDig1[row - i + _n] && !checkDig2[row + i]){checkCol[i] = checkDig1[row - i + _n] = checkDig2[row + i] = true;path[row][i] = 'Q';DFS(row + 1);checkCol[i] = checkDig1[row - i + _n] = checkDig2[row + i] = false; // 回溯path[row][i] = '.';}}}
};
http://www.hengruixuexiao.com/news/6405.html

相关文章:

  • 邢台网站建设哪里有深圳seo网站推广方案
  • 白色网站源码关键词排名优化营销推广
  • 可拖拽建设网站没有了吗上海网站seo快速排名
  • 做网站要用什么服务器seo优化的主要任务
  • 山东建大建设集团有限公司优化工具箱
  • 网站建设公司源码网站建设网络推广公司
  • 做熊猫tv网站的目的seo网站优化工具
  • 翔安区建设网站免费二级域名生成网站
  • 中文响应式网站适合发表个人文章的平台
  • 房地产新闻最新消息seo搜索引擎优化实训报告
  • 网站建设丶金手指下拉十五百度快速收录办法
  • 网站建设课程基础太原seo招聘
  • 郑州网站推广价格信息东莞网络营销渠道
  • 一个旅游网站怎么做seo赚钱吗
  • 只用jsp做网站苏州seo建站
  • wordpress改链接seo入门基础教程
  • 专业设计网站的公司电商怎么做如何从零开始
  • 网站设计服务有哪些市场推广是做什么的
  • 众创空间文化建设网站万网域名管理平台
  • 怎么把网站排名百度关键词搜索技巧
  • 教学网站开发应用指导方案怎样做网站推广啊
  • 网站备案协议网络口碑营销名词解释
  • 网站建设开发语言国外搜索引擎优化
  • wordpress小说网站模板今日新闻热点10条
  • 做淘宝客网站需要什么要求吗seo网站推广实例
  • 示范专业网站建设大搜推广
  • 携程旅行网seo站长工具平台
  • 阿里云做网站需要环境爱站站长工具
  • 兰州网站建设公司哪家好360站长工具seo
  • 高埗镇网站仿做关键词优化简易