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

wap手机网站开发asp经验wordpress改网址

wap手机网站开发asp经验,wordpress改网址,企业网页建设公司哪家比较好,网站开发的权限设置题目 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 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.yayakq.cn/news/405586/

相关文章:

  • 长沙网站维护弹出网站代码
  • 可以看帖子的网站珠海做网站推广公司
  • 网站下载免费的视频软件在线教学的网站开发方案
  • 在vs上用c 做登录网站c2c网站开设店铺
  • 廊坊百度推广网站设计seo手机排名软件
  • 网站seo课设自我介绍html网页模板
  • 网站维护入门教程青岛大学网站建设
  • 山东建设执业师专业官方网站上海 专业网站建设
  • 电力网站建设NET网站开发程序员招聘
  • 宁波网站推广优化联系电话网页设计基础教程题库
  • wordpress 换域名 全站301重定向网站备案多久一次
  • 东莞网站建设属于什么专业手机系统
  • 网站建设 在线购买摄影网站建设策划书
  • seo建站如何查询网站开发语言
  • wordpress建站很麻烦淘宝网站代理怎么做的
  • 网站建设用款html5建设的网站
  • 郑州网站建设公司qq南昌招商网站建设
  • 中国建设银行网站色彩制作公司网站应该考虑什么
  • 网站开发解决方案义乌高端网站建设
  • 网站建设等级定级网站与公众号的区别
  • 常用网站代码百度的官方网站
  • 单页面个人网站asp.net网站开发使用到的技术
  • 转移网站如何转数据库网站开发授权书
  • 石家庄网站建设公司怎么样网站建设友情链接怎样交换
  • 网站备案幕布照片尺寸企业网站建设的成本
  • 龙岩做网站的wordpress 破解
  • 常见的网站开发语言公司部门及职责
  • 网站的权重是什么意思网页链接
  • 骏域网站建设专家电话wordpress价格插件
  • 物流网站怎么做代理西安广告设计公司有哪些