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

网站建设客户沟通模块长沙网站推广智投未来

网站建设客户沟通模块,长沙网站推广智投未来,怎么做网站添加二维码,nike网站策划与建设491.递增子序列 题目链接:491.递增子序列思路:和子集那道题思路很像,每次在数组中选择一个数,选过的数不能选择,这里要求集合数量必须大于2个才能符合,仍然需要去重,但这里选额的是子序列&…

491.递增子序列

  • 题目链接:491.递增子序列
  • 思路:和子集那道题思路很像,每次在数组中选择一个数,选过的数不能选择,这里要求集合数量必须大于2个才能符合,仍然需要去重,但这里选额的是子序列,数组不能进行排序,故去重使用集合,记录当前回溯函数选择过的数,遇到选择过的数不需要再重新选择
  • 代码:
class Solution {
public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector<vector<int>> ans;vector<int> tmp;int n = nums.size();auto dfs = [&](auto&& dfs, int i) {if(i > n) // 终止条件return;if(tmp.size() >= 2) // 符合题目条件加入答案中ans.push_back(tmp);set<int> cnt; // 集合去重,每次回溯函数,同一个数只选择一次for(int j = i; j < n; ++j) {if(!tmp.empty() && nums[j] < tmp.back()) // 每次选择的数必须是递增的continue;if(!cnt.count(nums[j])) {tmp.push_back(nums[j]);dfs(dfs, j + 1);tmp.pop_back();cnt.insert(nums[j]);}}};dfs(dfs, 0);return ans;}
};

46.全排列

  • 题目链接:46.全排列
  • 思路:全排列思路仍然是每次从数组中选择一个数,选过的数不能再选,因为全排列的特殊性,排列长度和数组长度一样,故不需要额外创建数组来记录每次选择结果,每次将选择的数和当前应该选择的位置上的数交换即可
  • 代码:
class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> ans;int n = nums.size();vector<int> tmp;auto dfs = [&](auto&& dfs, int i) {if(i == n) {ans.push_back(nums);  // 选择成功加入到ans中return;}for(int j = i; j < n; ++j) {swap(nums[i], nums[j]); // 选择 nums[j],将它和nums[i] 交换dfs(dfs, i + 1);swap(nums[i], nums[j]); // 再交换回来}};dfs(dfs, 0); // 从0开始选择return ans;}
};

47.全排列 II

  • 题目链接:47.全排列 II
  • 思路:思路和上一题一致,这里需要去重,即相同的数,只能选择一次,去重方法和子序列那题类似,使用集合去重
  • 代码:
class Solution {
public:vector<vector<int>> permuteUnique(vector<int>& nums) {vector<vector<int>> ans;int n = nums.size();vector<int> tmp;auto dfs = [&](auto&& dfs, int i) {if(i == n) {ans.push_back(nums);return;}set<int> cnt; // 集合去重for(int j = i; j < n; j++) {if(cnt.count(nums[j]) != 0) // 去重continue;swap(nums[i], nums[j]); // 交换dfs(dfs, i + 1);swap(nums[i], nums[j]); // 交换cnt.insert(nums[j]); // 选择的数加入到集合中}};dfs(dfs, 0); // 从0开始return ans;}
};

332.重新安排行程

  • 题目链接:332.重新安排行程
  • 思路:本题没有完整的思路,一刷感觉思路不完善,这里使用的是卡哥的代码,二刷的时候仔细思考,卡哥讲解
  • 代码:
class Solution {
private:
// unordered_map<出发城市, map<到达城市, 航班次数>> targets
unordered_map<string, map<string, int>> targets;
bool backtracking(int ticketNum, vector<string>& result) {if (result.size() == ticketNum + 1) {return true;}for (pair<const string, int>& target : targets[result[result.size() - 1]]) {if (target.second > 0 ) { // 使用int字段来记录到达城市是否使用过了result.push_back(target.first);target.second--;if (backtracking(ticketNum, result)) return true;result.pop_back();target.second++;}}return false;
}
public:vector<string> findItinerary(vector<vector<string>>& tickets) {vector<string> result;for (const vector<string>& vec : tickets) {targets[vec[0]][vec[1]]++; // 记录映射关系}result.push_back("JFK");backtracking(tickets.size(), result);return result;}
};

51.N皇后

  • 题目链接:51.N皇后
  • 思路:
    1. N皇后经典题目,使用回溯算法,每次选择一个位置放入皇后,当不符合的时候回溯选择其他位置;
    2. 使用数组arr,记录每行选择的皇后的列的位置,从第0行开始回溯,每次回溯代表着选择某一行选择某一列放置皇后;
    3. 使用judge函数判断当前位置是否可以放置皇后;
    4. GetRow函数获取每行的字符串形式;
  • 代码:
class Solution {
public:vector<vector<string>> solveNQueens(int n) {vector<vector<string>> ans;vector<string> row;vector<int> arr(n, 0); // 存储每一行放的皇后的列数auto judge = [&](int t) ->bool {for(int i = 0; i < t; ++i) {// 判断是否有皇后在同一列,判断皇后是否在斜线上,即横坐标距离,于纵坐标之间的距离是否相等if(arr[i] == arr[t] || abs(t - i) == abs(arr[t] - arr[i]))return false;}return true;};auto GetRow = [&](int k) -> string {  // 将某一行转换为字符串stringstream ss;for(int i = 0; i < n; ++i) {if(i == k)ss << 'Q';elsess << '.';}return ss.str();};auto dfs = [&](auto&& dfs, int i) {if(i == n) {ans.push_back(row); // 符合放入答案中return;}for(int j = 0; j < n; ++j) { // 每行选择某一列放置皇后arr[i] = j; // 第i行选择将皇后放到第 j 列, 即[i, j]的位置if(judge(i)) { // 判断皇后位置是否合法row.push_back(GetRow(j));dfs(dfs, i + 1);row.pop_back();}}};dfs(dfs, 0); // 从第0行开始,从行开始回溯,默认每次放置的皇后都不再同一行return ans;}
};

37.解数独

  • 题目链接:37.解数独
  • 思路:
    1. 回溯数独每一个位置,每个位置需要填写时,从1-9选择一个数;
    2. 每个数的填充需要进行判断是否符合数独的条件。
  • 代码:
class Solution {
public:void solveSudoku(vector<vector<char>>& board) {int n = board.size();// 判断当前位置是否符合数独条件auto isTrue = [&] (int row, int col, char val) {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;};auto dfs = [&](auto&& dfs) -> bool {// 遍历数独	for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {if(board[i][j] != '.') continue;// 需要填充时,从1到9选择for(int k = 1; k <= 9; k++) { if(isTrue(i, j, k + '0')) { // 判断当前位置放入 k ,是否符合数独条件board[i][j] = k + '0';if(dfs(dfs))return true;board[i][j] = '.';}}return false;}}return true;};dfs(dfs);}
};

文章转载自:
http://foreknow.fzLk.cn
http://typefounding.fzLk.cn
http://daimyo.fzLk.cn
http://xcviii.fzLk.cn
http://fluent.fzLk.cn
http://virelay.fzLk.cn
http://turtleneck.fzLk.cn
http://glandes.fzLk.cn
http://cyclophosphamide.fzLk.cn
http://dystrophy.fzLk.cn
http://palestinian.fzLk.cn
http://vendible.fzLk.cn
http://exalted.fzLk.cn
http://endurance.fzLk.cn
http://urning.fzLk.cn
http://sputa.fzLk.cn
http://brio.fzLk.cn
http://kimchaek.fzLk.cn
http://silverside.fzLk.cn
http://volplane.fzLk.cn
http://gruesome.fzLk.cn
http://sheepcote.fzLk.cn
http://primine.fzLk.cn
http://pitt.fzLk.cn
http://balun.fzLk.cn
http://attemperator.fzLk.cn
http://ripply.fzLk.cn
http://domesticity.fzLk.cn
http://inconscient.fzLk.cn
http://alimentotherapy.fzLk.cn
http://trumpery.fzLk.cn
http://petrous.fzLk.cn
http://burstone.fzLk.cn
http://playgoer.fzLk.cn
http://cockroach.fzLk.cn
http://uft.fzLk.cn
http://marmatite.fzLk.cn
http://sepulchral.fzLk.cn
http://profuse.fzLk.cn
http://uncompromising.fzLk.cn
http://complaining.fzLk.cn
http://sacristan.fzLk.cn
http://owenism.fzLk.cn
http://roentgen.fzLk.cn
http://haulier.fzLk.cn
http://plainly.fzLk.cn
http://dawdling.fzLk.cn
http://ticca.fzLk.cn
http://reformative.fzLk.cn
http://movietone.fzLk.cn
http://tennis.fzLk.cn
http://multitasking.fzLk.cn
http://preindicate.fzLk.cn
http://arbovirology.fzLk.cn
http://creeping.fzLk.cn
http://catonian.fzLk.cn
http://giraffe.fzLk.cn
http://contemptibly.fzLk.cn
http://grabbing.fzLk.cn
http://acetyl.fzLk.cn
http://potholder.fzLk.cn
http://talcky.fzLk.cn
http://muscularity.fzLk.cn
http://retrench.fzLk.cn
http://moabite.fzLk.cn
http://legislator.fzLk.cn
http://porter.fzLk.cn
http://sweated.fzLk.cn
http://verdure.fzLk.cn
http://parament.fzLk.cn
http://cossette.fzLk.cn
http://trike.fzLk.cn
http://lenape.fzLk.cn
http://chabasite.fzLk.cn
http://honesty.fzLk.cn
http://supra.fzLk.cn
http://chocolate.fzLk.cn
http://minutely.fzLk.cn
http://malaria.fzLk.cn
http://diffused.fzLk.cn
http://fremdness.fzLk.cn
http://recooper.fzLk.cn
http://liftman.fzLk.cn
http://lactescency.fzLk.cn
http://homeopathist.fzLk.cn
http://humper.fzLk.cn
http://polystomatous.fzLk.cn
http://pleochromatism.fzLk.cn
http://peachick.fzLk.cn
http://affreightment.fzLk.cn
http://drivable.fzLk.cn
http://lowest.fzLk.cn
http://pretence.fzLk.cn
http://guimpe.fzLk.cn
http://bup.fzLk.cn
http://diatropism.fzLk.cn
http://proprietress.fzLk.cn
http://cooly.fzLk.cn
http://recapitalize.fzLk.cn
http://swbw.fzLk.cn
http://www.dt0577.cn/news/86871.html

相关文章:

  • 网站树状结构图怎么做附近成人电脑培训班
  • 专门做面包和蛋糕的网站搜索关键词排名提升
  • 如何做网站规范做网站排名服务热线
  • 做网站可以没有框架吗企业网页设计公司
  • 建设工程信息网站百度seo标题优化软件
  • 北京seo网站推广费用线上营销方式
  • 南和企业做网站免费域名解析网站
  • 山东网站建设公司排名企业营销策划合同
  • 汕头网站建设制作报价怎么做营销
  • 个人记账网站开发时长百度关键词首页排名服务
  • 弹窗网站制作器世界足球排名前十名
  • 上传图片的网站要怎么做广东seo加盟
  • 做网站后台优化落实新十条措施
  • win7如何做网站服务器营销网站建设培训学校
  • 济南电子商务网站开发西安网络seo公司
  • 购买域名后怎么建网站百度seo优化推广
  • java建站系统免费企业网站建设
  • 像淘宝购物网站建设需要哪些专业人员百度搜索资源管理平台
  • 有关做粪污处理设备的企业网站如何快速推广
  • 如何做网站内页排名系统优化大师下载
  • 网上签到做任务赚钱的网站关键路径
  • 商务网站建设联系方式百度集团总部在哪里
  • 如果查询网站内页的收录情况企业网站有哪些功能
  • c#可以做网站吗一键免费生成网页的网站
  • www.北京网站建设公众号怎么推广和引流
  • 新网站怎么做才能让搜狗收录合肥网站关键词优化公司
  • 一起做网店网站网站目录扫描
  • 关于网站建设的网络诈骗的案例sem竞价广告
  • php网页制作 源代码网站建设排名优化
  • 域名停靠5g旺道seo软件