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

做海报图片的网站建设企业网站多少钱

做海报图片的网站,建设企业网站多少钱,吉林省最新疫情最新消息,ui界面给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums [4, 3, 2, 3, 5, 2, 1], k 4 输出: True 说明: 有可能将其分成 4 个子集&#…

给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。

示例 1:

输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4
输出: True
说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。
示例 2:

输入: nums = [1,2,3,4], k = 3
输出: false

提示:

1 <= k <= len(nums) <= 16
0 < nums[i] < 10000
每个元素的频率在 [1,4] 范围内

题解(回溯法)

题解参考自LFool
把集合中数字想象成球,把子集想象成桶
遍历数组计算总和sum,如果sum%k!=0直接返回false
否则令target=sum/k,计算每个桶内球的值之和是否等于sum/k

法一、球选择桶

在这里插入图片描述

dfs(nums,target,idx,bucket)

  1. 递归终止:idx越界,已经处理完所有球(idx==nums.length)
  2. 本层操作:bucket[i]+=nums[idx];
    剪枝:nums[idx]+bucket[i]>target
  3. 向下递归:如果有一个路径为true则返回true
    if(dfs(nums,idx+1,bucket,k,target)) return true;
  4. 回溯:
    bucket[i]-=nums[idx]
class Solution {public boolean canPartitionKSubsets(int[] nums, int k) {int sum = 0;for (int i = 0; i < nums.length; i++) sum += nums[i];if (sum % k != 0) return false;int target = sum / k;int[] bucket = new int[k];return dfs(nums,0,bucket,k,target);}private boolean dfs(int[] nums, int idx, int[] bucket, int k, int target){// 递归终止:idx越过数组边界,此时已经处理完所有球if (idx == nums.length) {// 判断现在桶中的球是否符合要求 -> 路径是否满足要求for (int i = 0; i < k; i++) {if (bucket[i] != target) return false;}return true;}//遍历所有桶寻找当前球可以放置的位置for(int i=0;i<k;i++){if(nums[idx]+bucket[i]>target) continue;//本层操作bucket[i]+=nums[idx];//向下递归:如果有一个路径为true则返回trueif(dfs(nums,idx+1,bucket,k,target)) return true;//回溯bucket[i]-=nums[idx];}return false;}
}

法二 桶选择球

class Solution {public boolean canPartitionKSubsets(int[] nums, int k) {int sum = 0;for (int i = 0; i < nums.length; i++) sum += nums[i];if (sum % k != 0) return false;int target = sum / k;int[] bucket = new int[k];return dfs(nums,0,bucket,k,target);}private boolean dfs(int[] nums, int idx, int[] bucket, int k, int target){// 递归终止:idx越过数组边界,此时已经处理完所有球if (idx == nums.length) {// 判断现在桶中的球是否符合要求 -> 路径是否满足要求for (int i = 0; i < k; i++) {if (bucket[i] != target) return false;}return true;}//遍历所有桶寻找当前球可以放置的位置for(int i=0;i<k;i++){if(nums[idx]+bucket[i]>target) continue;//本层操作bucket[i]+=nums[idx];//向下递归:如果有一个路径为true则返回trueif(dfs(nums,idx+1,bucket,k,target)) return true;//回溯bucket[i]-=nums[idx];}return false;}
}
收起
http://www.dtcms.com/wzjs/177583.html

相关文章:

  • wordpress本站只对会员开放站长工具seo推广 站长工具查询
  • 石大远程网页设计与网站建设答案网站提交入口大全
  • 宣讲家网站美丽乡村建设青岛关键词推广seo
  • 做服装行业网站推广策划书模板范文
  • 网站建设abc企业宣传网站
  • 南京网站a建设云世家软文写作服务
  • 凡客诚品官网app下载成都网站排名 生客seo
  • 南昌有没有做企业网站和公司上海优化seo排名
  • 营销型企业网站建设教案某网站seo诊断分析
  • 做设计网站国内真正的永久免费建站
  • 哪个网站做美食视频引流推广犯法吗
  • 广西建设监理协会官网站企业网络推广方法
  • wordpress 博客系统百度网站排名关键词整站优化
  • 企业网站手机端跳转设置自助网站建设平台
  • 最大的网站建设公司排名天津seo推广服务
  • 做网站开发有哪些优点呢河南百度推广电话
  • 网站关于我们什么意思外链网盘
  • vps用什么软件做网站广东网站营销seo费用
  • 傻瓜式做网站程序济南优化哪家好
  • 学设计的网站推荐疫情最新数据
  • 南宁小程序定制开发公司陕西seo快速排名
  • 新浪云搭建wordpress百度seo报价方法
  • 个人宽带备案网站朝阳seo
  • 最新网页传奇青岛关键词优化seo
  • 个人可以做社区网站有哪些自己如何建立网站
  • 苏州网站制作设计百度网址是多少 百度知道
  • 平度网站建设公司电话个人网站开发网
  • 旅游网站开发报价单月入百万的游戏代理
  • 网站怎么做不违法网站注册地址查询
  • 网站开发要学哪些知识企业获客方式