课堂练习之乘坐电梯的方法

一、设计思路

  对这个问题进行思考的过程中,还是选择了最原始的方法,需要上电梯的人,没人都按下自己要前往的目的楼层,然后假设一个最优的目的楼层,

用每个人按下的目的楼层减去假设的最优楼层,取绝对值然后再相加,所得的和就是全部人需要爬的楼层数,然后选择最小的值,返回它的脚标,就是最优的目的楼层数。

二、源代码

 

 1 import java.util.*;
 2 
 3 class Elevator
 4 {    
 5     public static int min(int s[])
 6     {
 7         int min = s[0];
 8         int temp = 0;
 9         for (int dest=0;dest<s.length ;dest++ )
10         {
11             if(s[dest]<min)
12             {
13                 temp = dest;
14             }        
15         }
16         return temp-1;
17     }
18     public static void main(String[] args) 
19     {
20         System.out.print("请输入要乘坐电梯的人数:");
21         Scanner sc = new Scanner(System.in);
22         int num = sc.nextInt();
23         int[] arr = new int[num];
24         
25         int dest = 0;//目的楼层
26         int max = arr[0];
27         for (int i=0;i<arr.length ;i++ )//循环接收楼层数
28         {
29             System.out.print("请第"+(i+1)+"个人输入要去的楼层:");
30             Scanner sc1 = new Scanner(System.in);
31             int n = sc1.nextInt();
32             arr[i] = n;
33         }
34         for (int i=0;i<arr.length ;i++ )
35         {
36             if(arr[i]>max)
37                 max = arr[i];
38         }
39         int[] sum = new int[max];
40         for (dest=1;dest<=max ;dest++ )
41         {
42             for (int i=0;i<arr.length ;i++ )
43             {
44                 sum[dest-1] += Math.abs(arr[i]-dest);
45             }
46             System.out.println("如果要到达第"+dest+"层,全部人需要爬的楼层总和为:"+sum[dest-1]+"层");
47         }        
48         System.out.println("因此应该到达的楼层数是:"+min(sum)+"层");
49         
50     }
51 }

 

三、实验结果

 

四、心得体会
 对于这种问题来说,还是相对侧重于数学的思想,解决问题的方法与很多,我想的这个也是最原始,最好想的,
实现起来也没有什么难度,但是还是应该有其他的更优的算法,还是应该多思考,多想一想还是对编程是有帮助的。

 

posted @ 2015-04-19 13:00  Gjianhao  阅读(127)  评论(0编辑  收藏  举报