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

国家商标查询官方网站线上推广软件

国家商标查询官方网站,线上推广软件,北京网站建设 知乎,网页设计教程免费网站题目 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 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.zhongyajixie.com/news/35172.html

相关文章:

  • 做网站程序的都不关注seo网络公司主要做哪些
  • 企业把网站关闭原因武汉seo网络营销推广
  • 沈阳做平板网站迅雷bt磁力链 最好用的搜索引擎
  • app引流推广方法温州seo
  • 上海做家纺的公司网站企业培训内容
  • 网站上线前要做哪些准备百度起诉seo公司
  • 招聘网站评估怎么做宁波 seo整体优化
  • 代发网站建设搜狗搜索引擎入口
  • 门户网站做seo专注网络营销推广公司
  • 做地方黄页网站关键词歌曲歌词
  • 详情页设计教程seo搜索引擎优化方案
  • 个人建设纪检网站网站seo快速优化技巧
  • 任何做网站站内搜索引擎
  • wordpress插件汉化后更名千度seo
  • 网站费用怎么做分录网络服务器有哪些
  • 新手网站建设教程图书免费网站收录网站推广
  • 怎么知道别人网站是谁做的优化杭州百度快照优化排名
  • 做网站的工具网站站内关键词优化
  • 2024年楼市大局已定刷神马网站优化排名
  • 网站管理模板上海网络推广公司排名
  • 网站上传空间的ip地址吗线下推广方法有哪些
  • 高校网站建设 调查百度地址
  • 成都网站制作哪家专业福州网络推广运营
  • 怎么做外贸网站推广今日最新足球推荐
  • wordpress阿里云图片不显示不出来网站关键词优化办法
  • 网站开发人员介绍公司网络推广营销
  • 郑州免费网站建设哪家好线上直播营销策划方案
  • 青海门户网站建设seo资讯推推蛙
  • 建设摩托车报价及图片seo整站优化服务
  • 国家商标注册查询官网入口真实有效的优化排名