一、題目要求
•石家莊鐵道大學基礎大樓一共有四部電梯,每層都有人上下,電梯在每層都停。覺得在每層都停覺得不耐煩。
•由於樓層不太高,在上下課高峰期時時,電梯從一層上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。
•問電梯停在那一樓層,能夠保證這次乘坐電梯的所有乘客爬樓梯的層數之和最少。
二、設計思想
用迴圈分別求出停在從第一層到最高層分別一共走多少層,其中對於乙個i層, 假設陣列中比i層小的有lcount個,等於i層的有mcount個,大於i層的有rcount個。用n[i]代表i與陣列中每個數差的絕對值之和。有n(i) = m;當i+1時,設等於i+1的數有midnext個,則此時:小於i+1的數有 lcount+mcount個, 大於i+1的數有 rcount-mcount個。相比較n(i)的情況, 位於i+1左邊所有數與i+1的差的絕對值,增加了lcount+mcount。相比較n(i)的情況, 位於i+1左邊所有數與i+1的差的絕對值,減少了 rcount-mcount。
n(i+1) = n(i) + lcount + mcount -(rcount-mcount);
mcount = midnext;
三、**實現
//四、截圖chengxuzhimei.cpp : 定義控制台應用程式的入口點。
//#include "
stdafx.h
"#include
"stdlib.h
"#define max 1000
void getfloorno(int *input, int
size)
;
int lcount,mcount,rcount; //
分別表示小於、等於、大於第i個數
intcur;
intl,r;
inti;
l = r = 0
; cur = 0
; lcount = 0
; rcount =size;
mcount = 0
;
for(i = 0;i)
result[
0] =r;
printf(
"停在各樓層時爬樓梯的總和分別為:\n");
for(i=1;i<=input[size-1];i++)
}}int main(void
) getfloorno(input,nperson);
return0;
}
五、心得體會
課上沒有了解老師說的方法,只有自己想的複雜的方法,就是時間複雜度為o(n^2)。但是在課下發現網上有好多這個問題的相關方法,經過分析還是覺得這種方法較容易理解。其實思維還是太正常化,被侷限了。以後要活躍點呢。
課堂練習 電梯排程
一 題目要求 石家莊鐵道大學基礎大樓一共有四部電梯,每層都有人上下,電梯在每層都停。信1201 1班的張一東覺得在每層都停覺得不耐煩。由於樓層不太高,在上下課高峰期時時,電梯從一層上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。問電梯停在那一樓層,能夠保證...
課堂作業 電梯排程
1.要求 石家莊鐵道大學基礎大樓一共有四部電梯,每層都有人上下,電梯在每層都停。信1201 1班的張一東覺得在每層都停覺得不耐煩。由於樓層不太高,在上下課高峰期時時,電梯從一層上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。問電梯停在那一樓層,能夠保證這次...
課堂作業 電梯排程
一 題目 石家莊鐵道大學基礎大樓高18層,共有四部電梯。在上下課高峰期時,電梯從一樓上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。設計演算法算出電梯停在哪一樓層能夠保證這次乘坐電梯的所有人爬樓梯的層數之和最少。二 設計思路 用遍歷的方法,由於都是從一層開...