1 8 小飛的電梯排程演算法

2021-06-26 04:09:38 字數 902 閱讀 1552

題目:有一棟樓,現在設計一種電梯排程演算法:電梯在一樓讓大家上電梯,然後根據大家選擇要到的樓層算出某一樓層i,電梯在i層停下讓所有人下電梯,然後大家爬樓梯達到自己的樓層。請問電梯停在哪一層,可以使得這一次的所有乘客爬樓層之和最短?

(一)最直接最簡單的方法就是直接列舉從第一層到最後一層,然後算出電梯停在哪一層會使得所有乘客爬樓層之和最短。

**如下:

int nperson;  //nperson[i]表示到第i層的乘客的數目

int nfloor = 0, nminfloor = 0;

int ntargetfloor = -1;

for(int i = 1; i <= n; ++i)

}

(二)

思路:當電梯停靠在第i層時,乘客所要爬的總的樓梯數為y.

假設有n1個乘客要到達的層數

所以有:

(1)當電梯改停在i-1,則 y+(n2+n3-n1)

(2)當電梯改停在i+1,則 y+(n1+n2-n3)

所以當後面那部分的值<0時(如(2)的n1+n2因此,我們可以從第一層開始,用以上策略,考察n1,n2,n3的值,依次調整以得到最優解.

int nperson;  //nperson[i]表示到第i層的乘客的數目

int nfloor = 0, nminfloor = 0;

int ntargetfloor = 1;

int n1 = 0, n2 = 0, n3 = 0;

for(n1 = 0, n2 = nperson[1], n3 = 0, i = 2; i <= n; ++i)

for(int i = 2; i <= n; ++i) else break;

}

1 8 小飛的電梯排程演算法

題目 有一棟樓,如今設計一種電梯排程演算法 電梯在一樓讓大家上電梯,然後依據大家選擇要到的樓層算出某一樓層i,電梯在i層停下讓全部人下電梯,然後大家爬樓梯達到自己的樓層。請問電梯停在哪一層。能夠使得這一次的全部乘客爬樓層之和最短?一 最直接最簡單的方法就是直接列舉從第一層到最後一層,然後算出電梯停在...

小飛的電梯排程演算法

程式設計之美 第1.8節 小飛的電梯排程演算法 假設樓層共有n層,電梯停在第x層,要去第i層的乘客數目總數為total i 所爬樓梯的總數就是sum,求使得這個和最小的x的值,即電梯停的樓層數。stop1函式是o n 2 的演算法,就是假設在每層樓停下,計算此時需要爬的樓梯數,如果比最小的少,則賦值...

小飛的電梯排程演算法

1 問題描述 某大廈一共有6部電梯,在高峰時間,每層都有人上下,電梯在每層都停,實習生小飛常常會被每層都停的電梯弄的很不耐煩,於是他提出了這樣乙個辦法 由於樓層不太高,每次電梯往上走時,我們只允許電梯停在其中的某一層。所有乘客都從一樓上電梯,到達某層後,電梯停下來,所有乘客再從這裡爬樓梯到自己的目的...