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

国家商标查询官方网站免费注册域名网站

国家商标查询官方网站,免费注册域名网站,山西工程项目视频制作公司,wordpress api 跨域题目 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 1.一个团只能上一辆车&#xff0…

题目

某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。
约束:
1.一个团只能上一辆车,并且代表团人数(代表团数量小于30,每个代表团人数小于30)小于汽车容量(汽车容量小于100)
⒉.需要将车辆坐满
输入描述
第一行 :代表团人数,英文逗号隔开,代表团数量小于30,每个代表团人数小于30
第二行:汽车载客量,汽车容量小于100
输出描述
坐满汽车的方案数量
如果无解输出0
示例1:
输入
5,4,2,3,2,4,9
10
输出
4
说明
以下几种方式都可以坐满车,[2,3,5]、[2,4,4]、[2,3,5]、[2,4,4]

思路

题目翻译过来就是,在给定数组中找若干数,让他们的和等于目标值,问有多少种找法?
以示例数据为例:
输入:
5,4,2,3,2,4,9
10
记代表团人数为数组arr,长度为len,汽车载客量为total。
先将arr从小到大排序(不排序也是一样的):2 2 3 4 4 5 9
定义二维数组dp[][],dp[i][j]代表从arr的前i个数中选,使选择数的和等于j的方案数,比如:

dp[0][0],代表从arr选取0个元素,让他们的和等于0有几种选法?很明显,啥都不选,和就是0,所以有1种选法,即dp[0][0]=1
dp[0][1],代表从arr选取0个元素,让他们的和等于1有几种选法?很明显,选取0个元素,要使和为1,不可能,因此dp[0][1]=0
dp[1][0],代表从arr最多选取1个元素,使他们的和等于0有几种选法?选0个元素,和等于0为选法1;选择1个元素,只能选2,大于目标0,因此不能选。所以总的选法还是为1,即dp[1][0]=1。
dp[len][total], 代表从arr最多选取len个元素(也就是从arr整个数组中选),使他们的和等于total有几种选法?也就是题目所求的答案

让我们总结一般规律,对于dp[i][j]。
记录当前值cur,i为从arr选取i个元素,选取1个元素的时候为arr[0],选取i个元素的时候,应该为arr[i-1]。
如果cur>j,也就是如果选了当前元素,那么其和势必大于j(arr中全为正数),不满足,所以此时不能选当前元素,dp[i][j]=dp[i-1][j]
如果cur<=j,不选当前元素的方案数为dp[i-1][j],选了当前元素的方案数为:dp[i-1][j-cur],所以此分支总的方案数为:dp[i][j]=dp[i-1][j]+dp[i-1][j-cur]
现在有了dp的初始值和递推关系,我们可以使用动态规划求出此问题的解。

题解

package hwod;import java.util.Arrays;
import java.util.Scanner;public class TakeCar {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] inputs = sc.nextLine().split(",");int[] nums = Arrays.stream(inputs).mapToInt(Integer::parseInt).toArray();int target = sc.nextInt();System.out.println(getPlanCnt(nums, target));}private static int getPlanCnt(int[] nums, int target) {int n = nums.length;int[][] dp = new int[n + 1][target + 1];dp[0][0] = 1;for (int i = 1; i < n + 1; i++) {//dp[0][x],x大于0时,其值明显为0,int数组的默认值刚好为0,所以不用更新int cur = nums[i - 1];for (int j = 0; j < target+1; j++) {dp[i][j] = dp[i - 1][j];if(cur<=j) dp[i][j] += dp[i - 1][j - cur];}}return dp[n][target];}
}

说明

排序和不排序时,dp变化结果分别如下,可以看到最后还是得到相同的结果:4
排序:
在这里插入图片描述

不排序:
在这里插入图片描述
说明:标黄的,横向代表j,从0到10,纵向代表arr中第i个的值(从0开始,第0个代表不取arr的元素,为0)

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

http://www.mmbaike.com/news/94727.html

相关文章:

  • 温州网站建设这个提高工作效率英语
  • 爱狼戈网站建设谷歌排名优化入门教程
  • 网络推广服务如何退费seo发包排名软件
  • 网站建设需要多钱开发网站建设
  • wordpress重置query循环搜索引擎优化培训
  • 假发外贸网站模板seo主管招聘
  • 深圳物流公司排名seo的基本步骤顺序正确的是
  • 做电子商务网站需要什么软件中国十大网站有哪些
  • excel网站建设免费建站平台
  • 病毒推广网站做seo推广公司
  • wordpress 主题预览插件网页seo优化
  • 日本有个做二十四节气照片的网站网络黄页推广软件哪个好
  • 在网站上做招聘版面网站怎么推广效果好一点呢
  • 天元建设集团有限公司刘军360站长工具seo
  • 郑州公司网站如何制作长安网站优化公司
  • 时代强个人网站百度电脑端入口
  • 免费发布推广的网站有哪些网络营销活动案例
  • 延庆网站建设关键字广告
  • 个人介绍的网页模板郑州网站seo服务
  • 建立平台的目的seo站长论坛
  • 江苏省两学一做网站seo资讯推推蛙
  • 华强北做电子网站建设西安seo优化系统
  • 网站建设怎么选公司最新军事战争新闻消息
  • 慕课网网站开发背景百度搜索工具
  • 大淘客网站如何做制作百度推广管家
  • 泰安企业建站公司电话营销型网站建设的公司
  • 提供网站建设出售青岛网站建设
  • 成都学做网站推广策略都有哪些
  • 如何建立网站建设互联网平台公司有哪些
  • 广州购物网站开发网站建设公司好