c 貪心 騎車上學

2021-10-22 15:59:25 字數 981 閱讀 3060

問題反思

剛看到這個問題時,我把這個問題和奶牛吃花的問題混到一起了。一方面因為這兩個題都需要同時考慮兩種問題要素:奶牛吃花需要考慮奶牛吃花的速度和距離牛圈的遠近;騎車上學需要考慮不同學生騎車的速率和騎車開始的時間早晚。另一方面是因為我對於解決貪心問題的經驗不足,從而忽視了騎車上學與奶牛吃花的不同點。奶牛吃花的問題在解決時每頭奶牛被拉回牛圈的過程是分時進行的,而騎車上學中不同學生的上學過程有同時進行的部分。這就導致拉回每頭奶牛所需的時間是互不干擾的;而每個換速率的時間點和前後學生的騎車速率與出發時間是息息相關的。

問題分析

在經過同學的點撥後,我發現了乙個很重要的問題:查理到校的時間就是第乙個學生到校的時間,也就是說只要求出所有學生中到校最快的學生的到校時間,問題就迎刃而解了。

這樣一來問題就變得簡單了。通過寫入資料,我們知道了每個學生出發的時間和每個學生騎車的速率。根據已知條件路程,我們就可以求出所有學生到校的時間。

這裡我們用結構體儲存每個學生的出發時間、速率和到校時間;

這裡我們用sort函式對所有學生的到校時間進行排序並輸出最小值;

這裡我們用ceil函式對輸出資料進行向上取整處理。

#include#include#includeusing namespace std;

struct students

;bool cmp(students &a,students &b)

sum(st[i]);

}sort(st,st+n,cmp);

cout《知識學習

ceil()對浮點資料向上取整

floor()對浮點資料向下取整

round()對浮點資料做四捨五入處理

反思解決貪心的思路應該有兩種大方向:

一種是將程式任務分成許多小任務去完成,每乙個小任務需要找乙個最優解,這種思路往往需要考慮各個小任務進行的互相影響,因此通常解決小任務互不干擾的貪心問題;

另一種是只考慮問題的大任務的完成情況選擇最優解,這種思路通常用來解決一些可以擁有多種方案去完成的任務。

騎車上課問題

描述 許多北大學生住在汪留校區,離主校區燕園4.5公里。汪留校區的學生要麼乘公共汽車要麼騎自行車去主校區上課。由於北京交通狀況差,許多學生選擇騎自行車。可假設所有學生 除了 charley 以外 騎自行車從汪留到燕園的速度不變。charley是乙個有不同騎車習慣的學生 他總是試圖跟在另乙個騎自行車的...

201812 1 小明上學 C語言

題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。京州市的紅綠燈是這樣工作的 每盞紅綠燈有紅 黃 綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈...

C語言上學期學習心得

經過了一學期的學習,我覺得對c語言已經有了乙個初步的認識。能夠做到利用c語言編織出一些非常簡單的程式,和讀懂大部分的程式 明白程式要表達的意思。下面是對c語言中有許多重要知識的總結 1 一些基本的函式和基本資料型別的應用。其中,基本資料型別分為整型 浮點型 字元型 列舉型別。基本函式包括輸入輸出函式...