用贪心算法解决最优服务次序问题,即顾客平均所等待的时间最少
最优服务次序问题
问题描述
假设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1<=i<=n,应如何安排n个顾客总的等待时间达到最小?总的等待时间是每个顾客等待服务时间的总和。并计算顾客的平均等待时间。
-
package 算法设计与分析;
-
-
import java.lang.reflect.Array;
-
import java.util.Arrays;
-
import java.util.Scanner;
-
//根据分析,若要使得顾客等待的时间最短,就需要每个顾客等待的时间最短,可以使用贪心算法,即使用短作业优先的方式进行服务,因此需要对顾客所需要的服务时间进行升序排序,然后计算出每一个顾客所需要的等待时间,并进行累加,最后计算出顾客的平均等待时间。
-
public class 最优服务次序问题 {
-
public static void main(String[] args) {
-
Scanner inScanner = new Scanner(System.in);
-
System.out.print("请输入排队顾客数:");
-
int n = inScanner.nextInt();//排队人数
-
int[] a = new int[n 1 ];
-
System.out.print("请输入每位顾客所需时间:" " ");
-
for (int i = 1; i <= n; i ) {
-
a[i] = inScanner.nextInt();
-
}
-
System.out.print("对服务时间进行排序后为:");
-
Arrays.sort(a);//对a数组里的元素从小到大排序
-
//System.out.print("对服务时间进行排序后为:");
-
for (int x = 1; x< a.length; x ) {//输出排序好的元素
-
-
System.out.print(a[x] " ");
-
}
-
System.out.println();//换行
-
Solve(n,a);
-
}
-
public static void Solve(int m,int a[]) {
-
float sum = 0;
-
for (int y = 1; y < m; y ) {
-
a[y 1] = a[y] a[y 1];//后面顾客的等待时间
-
}
-
for (int y = 1; y < m; y ) {
-
sum = a[y];//将每个人的等待时间加起来,及等待时间和
-
}
-
System.out.println("平均服务时间为:" sum/m);
-
}
-
}
运行结果
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgehhhh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01