改进昨天的电梯电梯问题
一、 改进内容,未考虑每一个用户的最优问题,如当有两个人乘电梯分别在2层和4层停时如果只考虑整体的就会在2层3层和4层停的结果都一样,但要充分为每一个用户考虑则
最好在3层停电梯。
此次改进内容为实现不使用户乘坐电梯两极分化,一个累死一个不用走路问题
package com.minirisoft; import java.util.Scanner; public class Dianti { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入有多少人用电梯"); int n=input.nextInt(); int[] array=new int[n]; int[] sum=new int[18]; int[] sum1=new int[18]; for(int j=0;j<n;j++) { System.out.println("请输入要到的楼层"); array[j]=input.nextInt(); } for(int i=0;i<18;i++){ for(int j=0;j<n;j++) { sum[i]=sum[i]+Math.abs(array[j]-(i+1)); sum1[i]=sum[i]; } } int max=sum[0]; int[] j=new int[18]; int p=0; int Floor=0; int F; int b=0; for(int i=0;i<18;i++) { if(sum[i]<sum[0]) { sum[0]=sum[i]; b=i+1; } } for(int i=0;i<18;i++) { if(sum1[i]==sum[0]) { j[p]=i; Floor=Floor+(j[p]+1); p++; System.out.println("可应该在"+(i+1)+"层停"); } } System.out.println("考虑每个用户最优"); F=Floor/p; System.out.println("应该在"+F+"层停"); } }
三、实验截图
四、心得体会
要根据实际问题考虑事情,老师的要求是找到总距离最小的,但我们应该考虑到他是电梯问题,应该考虑到所有用户的感受。