1 8小飛的排程演算法

2022-09-13 19:42:13 字數 878 閱讀 5443

亞洲微軟研究院所在的希格瑪大廈一共有6部電梯。在高峰時間,每層都有人上下,電梯每層都停。實習生小飛常常會被每層都停的電梯弄的很不耐煩,於是他提出了這樣乙個辦法:

由於樓層並不算太高,那麼在繁忙的上下班時間,每次電梯從一層往上走時,我們只允許電梯停在其中的某一層。所有乘客從一樓上電梯,到達某層後,電梯停下來,所有乘客再從這裡爬樓梯到自己的目的層。在一樓的時候,每個乘客選擇自己的目的層,電梯則計算出應停的樓層。

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

解法1:直接列舉暴力

解法2:時間可優化到o(n)

直覺反應,電梯在前面的狀態對後面的狀態有影響。粘帶效應啊,很多題目都這樣子~~

紅色代表停靠樓層,n1表示目的地在停靠樓層之下的人數,n2表示目的地在停靠樓層的人數,n3表示之上的人數。

設電梯在第i層停時,乘客走的總樓層數為x。若電梯在第i+1停靠時,乘客走的總樓層數為x'=x+n1+n2-n3  (低於的每人多走一層,高於的每人少走一層)

所以,要想總走樓層變少,只需保證y=n3-(n1+n2)>0,且y隨著電梯的上公升而減少,當y<0時,表示已經處在最佳樓層!

code:

//

初始化,第一層時

int n1=0

;int n2=1

;int n3=0

;int sum=0

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

for(int i=2;i<=2;i++)

else

break; //

一旦不符合,將後都不可能符合

}

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

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

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

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

程式設計之美 1 8 小飛的電梯排程演算法

程式設計之美 1.8 小飛的電梯排程演算法 亞洲微軟研究院所在的希格瑪大廈一共有6部電梯。在高峰時間,每層都有人上下,電梯每層都停。實習生小飛常常會被每層都停的電梯弄的很不耐煩,於是他提出了這樣乙個辦法 由於樓層並不算太高,那麼在繁忙的上下班時間,每次電梯從一層往上走時,我們只允許電梯停在其中的某一...