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

青岛网站建设价格站长之家爱站网

青岛网站建设价格,站长之家爱站网,自己做的网站 打开了没有图片,给静态网站加后台原文地址:Chocolate Distribution Problem 已知一个有n个整数的数组,数组中的每个值表示的是一个包裹中巧克力的数量。每个包裹都有一个表示巧克力数量的变量。这里有m个学生,按下面的规定把巧克力包裹分发出去: 每个学生都得到…

原文地址:Chocolate Distribution Problem

已知一个有n个整数的数组,数组中的每个值表示的是一个包裹中巧克力的数量。每个包裹都有一个表示巧克力数量的变量。这里有m个学生,按下面的规定把巧克力包裹分发出去:

  1. 每个学生都得到一个包裹;
  2. 给到学生的巧克力包裹含有的最大巧克力数目与最小巧克力数目的的差为最小。

例子:

输入: arr[] = {7, 3, 2, 4, 9, 12, 56} m = 3
输出: 最小差是2我们有七个巧克力包裹,并且需要选出3个给学生,如果我们选择2,3,4的话,那么我们就得到了最大包裹与最小包裹的最小差。输入: arr[] = {3, 4, 1, 9, 56, 7, 9, 12} m = 5
输出: 最小差是6
例如集合3,4,7,9,9,那么输出为9-3 = 6输入: arr[] = {12, 4, 7, 9, 2, 23, 25, 41, 30, 40, 28, 42, 30, 44, 48, 43, 50} m = 7
输出: 10我们得选出7个包裹。选择40,41,42,44,48,4350得到最大值和最小值的差。

一个简单的方案就是生成所有大小为m的arr[0..n-1]的子集。对于每个子集,然后找出其中的最大值与最小值的差,最后返回最小的差。

另一个有效的方法就是基于观察来最小化差距,我们必须从有序的包裹中选择连续的元素,我们首先对arr[0..n-1]进行排序,然后找到大小为m的子集的最后一个元素与第一个元素的差的最小值。

// C++ program to solve chocolate distribution
// problem
#include<bits/stdc++.h>
using namespace std;// arr[0..n-1] represents sizes of packets m is number of students.
// Returns minimum difference between maximum and minimum values of distribution.
int findMinDiff(int arr[], int n, int m)
{// if there are no chocolates or number// of students is 0if (m==0 || n==0)return 0;// Sort the given packetssort(arr, arr+n);// Number of students cannot be more than// number of packetsif (n < m)return -1;// Largest number of chocolatesint min_diff = INT_MAX;// Find the subarray of size m such that difference between last (maximum in case// of sorted) and first (minimum in case of sorted) elements of subarray is minimum.int first = 0, last = 0;for (int i=0; i+m-1<n; i++){int diff = arr[i+m-1] - arr[i];if (diff < min_diff){min_diff = diff;first = i;last = i + m - 1;}}return (arr[last] - arr[first]);
}int main()
{int arr[] = {12, 4, 7, 9, 2, 23, 25, 41,30, 40, 28, 42, 30, 44, 48,43, 50};int m = 7;  // Number of studentsint n = sizeof(arr)/sizeof(arr[0]);cout << "Minimum difference is "<< findMinDiff(arr, n, m);return 0;
}

输出:

Minimum difference is 10

时间复杂度是:O(nLogn),因为我们在子数组查询前做个了排序。

http://www.lbrq.cn/news/2735965.html

相关文章:

  • cvm服务器做网站营销型企业网站案例
  • 在北京做网站制作一个月多少钱微信朋友圈营销方案
  • 网站建设开发费用爱站网综合查询
  • 简单网页制作模板下载seo关键词搜索和优化
  • 工作室推广网站推送者seo
  • 品牌网站建设信息提高基层治理效能
  • 全球疫情最新消息数据seo快速排名软件
  • 阿里云网站建设9元免费留电话的广告
  • 拼多多网站开发百度手机助手网页
  • 成都网站设计推荐天津seo排名公司
  • 网站制作公司的流程磁力宅
  • 人员优化方案电子商务seo是什么意思
  • wordpress视频防止下载文件惠州seo推广外包
  • 网站制作用的软件有哪些今日热搜第一名
  • 做网站需要掌握什么建站之星
  • 武汉手机网站建设公司竞价网官网
  • 做购物网站是怎么连接银行什么是网络推广
  • 如何注册海外域名优化是什么意思?
  • 国外做彩票网站违法吗手机端网站排名
  • 南宁百度网站建设公司百度关键词搜索推广
  • 用asp.net做网站的书百度贴吧网页版入口
  • 中企动力做的网站被百度屏蔽小程序开发公司排行榜
  • php 网站做分享功能抖音搜索引擎推广
  • 达人室内设计网站百度竞价开户费用
  • php网站开发案例成都百度seo推广
  • 电子商务网站项目建设阶段的划分福州网站制作推广
  • 南宁网站设计要多少钱营销推广文案
  • java做网站的优点seo关键词排名优化哪好
  • wordpress 判断是否为首页国内做seo最好公司
  • seo系统推广seo入门讲解
  • 【LeetCode 热题 100】70. 爬楼梯——(解法二)自底向上
  • JavaScript(JS)DOM(四)
  • PAT 1064 Complete Binary Search Tree
  • Linux-地址空间
  • 零基础-动手学深度学习-10.3. 注意力评分函数
  • 解刨HashMap的put流程 <二> JDK 1.8