一、題目要求
石家莊鐵道大學基礎大樓一共有四部電梯,每層都有人上下,電梯在每層都停。信1201-1班的張一東覺得在每層都停覺得不耐煩。
由於樓層不太高,在上下課高峰期時時,電梯從一層上行,但只允許停在某一樓層。在一樓時,每個乘客選擇自己的目的層,電梯則自動計算出應停的樓層。
問電梯停在那一樓層,能夠保證這次乘坐電梯的所有乘客爬樓梯的層數之和最少。
二、設計思想 設第乙個人按l1樓層,第二個人按l2樓層……第n個人按ln樓層。設最優的層數為x
三、設計思路一: 求絕對值得最小值 min=|l1-x|+|l2-x|+l3_x|……|ln-x|
設計思路二: 求方差的最小值 min=(l1-x)^2+(l2-x)^2+(l3-x)^2+……(ln-x)^2 min最小時,x取得最優樓層。min預設為0。 即x=(-b(+/-)sqrt(b^2-4ac))/2a 將求得的結果進行取整和取捨,x大於最小樓層,小於最大樓層
設計思路三: 假設電梯停在第i層,顯然我們可以計算出所有乘客總共要爬的層數y。如果有n1個乘客目的樓層在i層以下,有n2個乘客在i層,還有n3個乘客在第i層以上。這個時候,如果電梯改停在第i-1層,所有目的地在i層以上的乘客都要多爬一層,總共需要n2+n3層,而所有目的地在第i-1層以下的乘客都可以少爬一層,總共少爬n1層。所以乘客總共需要爬y-(n1-n2-n3) 反之,如果電梯停在i+1層,那麼乘客總共需要爬y+(n1+n2-n3)層。 由此可知: 當n1>n2+n3時,電梯停在i-1層好,乘客少走n1-n2-n3層 當n1+n2四、源**
#include using namespace std;五 實驗截圖int person = ;
int targetfloor = 1;
int minfloor = 0;
int n1;//第i層以下的總乘客數
int n2;//第i層的乘客數
int n3;//第i層以上的總乘客數
int i;
int n = 5;
void min1()
for (int j = n - 1; j >= 1; j--)
else
break;
}cout << "應該停在: " << endl;
cout << targetfloor << " floor" << endl;
cout << "最小樓層數: " << endl;
cout << minfloor << endl;
}int main()
六 實驗總結
通過本次實驗,深刻體會到了將複雜問題分化的重要性,能夠最快的幫助我們找到思路,解決問題。
最優比率環 最優比率問題
給定有點權和邊權的圖,要求找乙個環,使環的點權和與邊權和的比值最大。此時求最大比率的式子與01規劃的式子有所不同 總算式加個負號 核心 取定乙個 r 值以後,帶入最短路的新的dis更新公式,再判斷是否存在至少乙個負環 找出乙個負環即可 存在負環和不存在負環兩種情況指示了 r 應如何取下乙個值,直到到...
最優合併問題
include iostream include fstream include vector include queue using namespace std int a 50 n為要合併的序列個數 返回最少合併次數 int mergemin int n q.pop return sum n為要...
最優佈線問題
time limit 1000ms memory limit 65536k 有疑問?點這裡 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們中間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資...