虛擬汽車加油問題 演算法設計 貪心法

2021-10-02 06:45:04 字數 2291 閱讀 2756

貪心法

問題背景

一輛汽車加滿油後可行駛nkm。旅途中有若干加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。

演算法設計:

對於給定的n和k個加油站位置,計算最少加油次數。

資料輸入:

n:表示汽車加滿油後可行駛nkm

k:旅途中有k個加油站

k+1個整數:表示第k個加油站與第k-1個加油站之間的距離。

第0個加油站表示出發地,汽車已加滿油。

第k+1個加油站表示目的地。

資料輸出:

最少加油次數和具體在哪幾個加油站加油。

貪心演算法

基本步驟

從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到演算法中的某一步不能再繼續前進時,演算法停止。

貪心演算法下的虛擬汽車加油問題

思想根據貪心選擇性,擷取當前位置到下一加油站區間,判斷當前油量是否能夠到達下一加油站,如果不能,在當前加油站加油;如果能,行駛至下一加油站。在擷取的區間內做出判斷,即選取區域性做出最優判斷。

過程設定變數tmp_gas表示當前汽車油量可行駛公里數

判斷到下乙個加油站的距離是否大於tmp_gas

如果大於則繼續前行,且當前油量可行駛公里數tmp_gas減去到下乙個加油站的距離

否則在當前加油站加滿油

貪心演算法虛擬汽車加油-python**

本**為python3下的貪心法虛擬汽車加油問題

關鍵步驟已標記注釋

# coding : utf-8

# 計算汽車最少加油次數以及加油站點

defcar_addgas

(n,k,dist)

: tmp_gas = n

station =[0

]*kfor i in

range

(len

(dist)):

if dist[i]

< tmp_gas:

tmp_gas-=dist[i]

else

: station[i-1]

=1tmp_gas=n-dist[i]

return station

# 讀input.txt獲取資料

with

open

('input.txt'

,'r'

)as f:

nk=f.readline(

).split(

) n =

int(nk[0]

,10) k =

int(nk[1]

,10) dist =

list

(map

(int

,f.readline(

).split())

)print

("\n汽車加滿油可行駛公里數:%d\n"

%n)print

("旅途中的加油站個數:%d\n"

%k)print

("各加油站間的公里數:\n"

)print

(dist)

print

("\n---------------------- solution ----------------------"

)station = car_addgas(n,k,dist)

# 轉換成加油站號s=[

]for i in

range(1

,k+1):

if i*station[i-1]

!=0:1

])# print(s)

res=

len(s)

# print(res)

print

("\n汽車最少加油次數為%d"

%res)

print

("\n汽車加油分別所在的加油站為:\n"

)print

(s)

分界線

***

****

****

****

****

****

***date:2020/1

/18category:演算法設計

author:ver.*

****

****

****

****

****

****

*

虛擬汽車加油問題 演算法設計

一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應 在哪些加油站停靠加油,使沿途加油次數最少。對於給定的n n 5000 和k k 1000 個加油站位置,程式設計計算最少加油次數。並證明演算法能產生乙個最優解。要求 輸入 第一行有2個正整數n和k,表示汽車加滿油後可行駛...

汽車加油問題 貪心演算法

問題描述 一輛汽車加滿油後可行駛 nkm 旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。程式設計任務 對於給定的n和k 個加油站位置,程式設計計算最少加油次數。資料輸入 第1行有 2個正整數n和 k,表示汽車加滿油後可行駛 nkm,且旅途有 k個加油站。接...

汽車加油問題(貪心演算法)

汽車加油問題 time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n...