課堂練習 電梯排程

2022-05-26 18:18:09 字數 1575 閱讀 7406

一、題目要求

•石家莊鐵道大學基礎大樓一共有四部電梯,每層都有人上下,電梯在每層都停。信1201-1班的張一東覺得在每層都停覺得不耐煩。

•由於樓層不太高,在上下課高峰期時時,電梯從一層上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。

•問電梯停在那一樓層,能夠保證這次乘坐電梯的所有乘客爬樓梯的層數之和最少。

二、設計思想

對於乙個i層, 假設陣列中比i層小的有lcount個,等於i層的有mcount個,大於i層的有rcount個。用yi代表i與陣列中每個數差的絕對值之和。有y(i) = m;

當i+1時,設等於i+1的數有midnext個,則此時:

小於i+1的數有  lcount+mcount個

大於i+1的數有 rcount-mcount個

相比較y(i)的情況, 位於i+1左邊所有數與i+1的差的絕對值,增加了lcount+mcount

相比較y(i)的情況, 位於i+1左邊所有數與i+1的差的絕對值,減少了 rcount-mcount

y(i+1) = y(i) + lcount + mcount -(rcount-mcount); 

mcount = midnext;

三、**實現

1 #include "

stdafx.h

"2 #include "

stdlib.h"3

4#define max 1000

5void getfloorno(int *input, int

size)6;

8int lcount,mcount,rcount; //

分別表示小於、等於、大於第i個數

9int

cur;

10int

l,r;

11int

i;12 l = r = 0

;13 cur = 0

;14 lcount = 0

;15 rcount =size;

16 mcount = 0;17

for(i = 0;i)

20 result[0] =r;

21 printf("

停在各樓層時爬樓梯的總和分別為:\n");

22for(i=1;i<=input[size-1];i++)34}

35}3637

38int main(void

) 39

49getfloorno(input,nperson);

50return0;

5152 }

四、執行結果

根據執行結果可知,電梯停靠在地5層時爬樓層數最少,為12層

五、總結

一開始沒明白老師說的什麼意思,理解為1-9層(假設)的話找到其中間層數就好了,但是題目要求要計算每個樓層每個人的爬樓梯數總和的最小值。

後來經過老師的講解明白了排程過程。感覺自己在程式設計上有待提高,思維還不夠活躍。。。會繼續努力的

繼承 課堂練習

package bzu.aa public class vehicle public vehicle public intgetcapacity public void setcapacity int capacity public void print package bzu.aa public ...

課堂練習 函式

練習1 用函式來做,青歌賽打分 位評委給乙個選中手分,去掉乙個最高分,去掉乙個最低分求歌手的平均得分。1 static void main string args 2 1617 1819 2021 static void shuchu int a,int zuidazhi int zuixiaozh...

課堂練習 5 10

對於可能的變更是否能制定應急計畫?1.首先肯這個變更的方向是有利的還是無病呻吟亦或是可有可無 2.其次這個變更是否會影響原本預估的時間,再怎麼說,不能拖慢原有計畫的節奏 3.計算此次變更所需的時間和預估產生的價值,如果不匹配,則不需要 員工是否能夠有效地處理意料之外的工作請求?1.以自己的能力為判定...