zoukankan      html  css  js  c++  java
  • 课堂练习之乘坐电梯的方法

    一、设计思路

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

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

    二、源代码

     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 }

    三、实验结果

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

  • 相关阅读:
    bzoj 1761: [Baltic2009]beetle 区间dp
    NOI冲刺计划
    bzoj 2107: Spoj2832 Find The Determinant III 辗转相除法
    bzoj 2482: [Spoj GSS2] Can you answer these queries II 线段树
    bzoj 1209: [HNOI2004]最佳包裹 三维凸包
    SCOI2015题解 && 考试小结
    bzoj 2806: [Ctsc2012]Cheat 后缀自动机DP
    考场上应该想到。。。。
    spoj LCS 后缀自动机
    BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支
  • 原文地址:https://www.cnblogs.com/KevinBin/p/4438968.html
Copyright © 2011-2022 走看看