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

专门做团购的网站网站百度收录查询

专门做团购的网站,网站百度收录查询,wordpress福利整站源码,抖音代运营考核标准前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day26, 休息的周末~ day 27,周一,库存没了,哭死~ 题目详情 [39] 组合总和 题目描述 39 组合总和 解题思路 前提:组合的子集问题&…

前言

思路及算法思维,指路 代码随想录。
题目来自 LeetCode。

day26, 休息的周末~
day 27,周一,库存没了,哭死~

题目详情

[39] 组合总和

题目描述

39 组合总和
39 组合总和

解题思路

前提:组合的子集问题,统一元素可以重复选取
思路:回溯 + 剪枝。
重点:剪枝的前提是数组已排序。

代码实现

C语言
回溯 + 未排序剪枝
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/void backtracing(int* candidates, int candidatesSize, int target, int index, int *nums, int numsSize, int ***ans, int* returnSize, int** returnColumnSizes)
{// 退出条件if (0 == target){*ans = (int **)realloc(*ans, sizeof(int *) * ((*returnSize) + 1));(*ans)[*returnSize] = (int *)malloc(sizeof(int) * (numsSize));for (int i = 0; i < numsSize; i++){(*ans)[*returnSize][i] = nums[i];}*returnColumnSizes = (int *)realloc(*returnColumnSizes, sizeof(int) * ((*returnSize) + 1));(*returnColumnSizes)[*returnSize] = numsSize;(*returnSize)++;return ;}for (int j = index; j < candidatesSize; j++){if (target < candidates[j]){continue ;}// 递归nums[numsSize] = candidates[j];numsSize++;backtracing(candidates, candidatesSize, target - candidates[j], j, nums, numsSize, ans, returnSize, returnColumnSizes);// 回溯numsSize--;nums[numsSize] = 0;}return ;
}int** combinationSum(int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes) {// 判空if (candidatesSize == 0){return NULL;}// 输出int **ans = NULL;int nums[41];int index = 0;*returnSize = 0;printf("%d\n", target);backtracing(candidates, candidatesSize, target, 0, nums, 0, &ans, returnSize, returnColumnSizes);if (*returnSize == 0){return NULL;}return ans;
}
回溯 + 排序 + 剪枝
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/int cmp(const void *p1, const void *p2)
{return *(int *)p1 > *(int *)p2;
}void backtracing(int* candidates, int candidatesSize, int target, int index, int *nums, int numsSize, int ***ans, int* returnSize, int** returnColumnSizes)
{// 退出条件if (0 == target){*ans = (int **)realloc(*ans, sizeof(int *) * ((*returnSize) + 1));(*ans)[*returnSize] = (int *)malloc(sizeof(int) * (numsSize));for (int i = 0; i < numsSize; i++){(*ans)[*returnSize][i] = nums[i];}*returnColumnSizes = (int *)realloc(*returnColumnSizes, sizeof(int) * ((*returnSize) + 1));(*returnColumnSizes)[*returnSize] = numsSize;(*returnSize)++;return ;}// 剪枝for (int j = index; (j < candidatesSize) && (target >= candidates[j]); j++){// 递归nums[numsSize] = candidates[j];numsSize++;backtracing(candidates, candidatesSize, target - candidates[j], j, nums, numsSize, ans, returnSize, returnColumnSizes);// 回溯numsSize--;nums[numsSize] = 0;}return ;
}int** combinationSum(int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes) {// 判空if (candidatesSize == 0){return NULL;}// 排序qsort(candidates, candidatesSize, sizeof(int), cmp);// 输出int **ans = NULL;int nums[41];int index = 0;*returnSize = 0;backtracing(candidates, candidatesSize, target, 0, nums, 0, &ans, returnSize, returnColumnSizes);if (*returnSize == 0){return NULL;}return ans;
}

[40] 组合总和II

题目描述

40 组合总和II
40 组合总和II

解题思路

前提:组合的子集问题,同一元素只能使用一次,但是结果不包含重复组合
思路:回溯 + 剪枝
重点:结果子集中排除重复组合,需要树形结构中,同一树层的相同的元素值不可重复选取,使用used数组实现去重。

代码实现

C语言
利用used数组 false,同一树层 去重
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/int cmp(const void *p1, const void *p2)
{return *(int *)p1 > *(int *)p2;
}void backtracing(int* candidates, int candidatesSize, int target, int index, int *nums, int numsSize, bool *used, int ***ans, int* returnSize, int** returnColumnSizes)
{// 退出条件if (0 == target){*ans = (int **)realloc(*ans, sizeof(int *) * ((*returnSize) + 1));(*ans)[*returnSize] = (int *)malloc(sizeof(int) * (numsSize));for (int i = 0; i < numsSize; i++){(*ans)[*returnSize][i] = nums[i];}*returnColumnSizes = (int *)realloc(*returnColumnSizes, sizeof(int) * ((*returnSize) + 1));(*returnColumnSizes)[*returnSize] = numsSize;(*returnSize)++;return ;}for (int j = index; (j < candidatesSize) && (target >= candidates[j]); j++){// 去重if ((j > 0) && (candidates[j] == candidates[j - 1]) && (used[j - 1] == false)){continue;}// 递归nums[numsSize] = candidates[j];used[j] = true;numsSize++;backtracing(candidates, candidatesSize, target - candidates[j], j + 1, nums, numsSize, used, ans, returnSize, returnColumnSizes);// 回溯numsSize--;used[j] = false;nums[numsSize] = 0;}return ;
}int** combinationSum2(int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes) {// 判空if (candidatesSize == 0){return NULL;}// 排序qsort(candidates, candidatesSize, sizeof(int), cmp);// 输出int **ans = NULL;int nums[100] = {0};bool used[100] = {false};int index = 0;*returnSize = 0;backtracing(candidates, candidatesSize, target, 0, nums, 0, used, &ans, returnSize, returnColumnSizes);if (*returnSize == 0){return NULL;}return ans;
}

[131] 分割回文串

题目描述

131 分割回文串
131 分割回文串

解题思路

前提:分割问题
思路:。
重点:。

代码实现

C语言
// 待补充

今日收获

  1. 组合子集问题:去重,同一树层去重 vs 同一树杈去重
  2. 切割问题。
http://www.hkea.cn/news/994127/

相关文章:

  • 初学者做动态网站项目例子游戏特效培训机构排名
  • 汽车类网站搭建直链平台
  • 做网站遇到的困难总结网络营销软件代理
  • 做网站登录论坛外链代发
  • 东营专业网站建设公司排行青岛谷歌优化公司
  • 公众号和网站先做哪个口碑营销的形式
  • 长沙企业建网站费用关键词搜索推广排行榜
  • 怎么做网站端口代理沧州网络推广外包公司
  • php wordpress 目录seo课程培训机构
  • 常州网站建设方案优化引流app推广软件
  • 网络营销网站建设实训网络营销步骤
  • 网站都有后台吗百度竞价开户公司
  • 秭归网站建设网站seo优化心得
  • wordpress电影网站模板seo运营
  • 公司注册网上核名业务如何终止网站排名优化怎么做
  • 网站建设伍金手指下拉2网上推广平台
  • 沧州网站建设公司翼马爱情链接
  • 计算机学了出来干嘛免费优化推广网站的软件
  • 宁波网站建设优化湖南seo优化按天付费
  • 门户网站手机版google官网入口
  • 深圳市工程建设交易服务中心网站软文什么意思
  • 大型网架加工厂成都网站建设方案优化
  • 导航网站的广告怎么做的千锋教育官方网
  • etc网站开发票网站制作软件免费下载
  • 上海seo网站设计2022十大网络营销案例
  • 还有做网站的必要吗网站运营推广方案
  • 企业营销型网站建设厂家品牌搜索引擎服务优化
  • 学校网站建设计划怎么成为百度推广代理商
  • 普陀网站开发培训学校seo快速优化
  • 建一个商城网站多少钱免费的网站推广软件