python自學做題記錄之加油站

2021-10-20 07:38:22 字數 1152 閱讀 6024

題目描述:

乙個環形的公路上有n個加油站,編號為0,1,2,…n-1, 每個加油站加油都有乙個上限,儲存在列表limit中,即limit[i]為第i個加油站加油的上限, 而從第i個加油站開車開到第(i+1)%n個加油站需要cost[i]公升油,cost為乙個列表。 現在有一輛開始時沒有油的車,要從乙個加油站出發繞這個公路跑一圈回到起點。 給你整數n,列表limit和列表cost,你來判斷能否完成任務。 如果能夠完成任務,輸出起始的加油站編號,如果有多個,輸出編號最小的。 如果不能完成任務,輸出-1。

示例:輸入:n = 2 limit = [1, 2] cost = [2, 2]

輸出:-1

分析一下

首先這個公路是環形,所以要用到%n

所以我們就可以用兩個迴圈來實現這個演算法

第一層num是控制起始的加油站編號

第二層i是控制加油次數,一共要加n次,可以直接0~n-1

然後每次就判斷現有的油量和所需的油量進行對比,如果少了,直接退出第二層迴圈,開始下乙個加油站編號

如果多了,要記得減掉消耗的,還有就是注意加乙個i!=n-1最後一次比較不需要減油

如果油還多並且是最後一站,就輸出,判斷條件f=1

還需要注意多解的情況,所以如果出現了符合條件的編號,直接兩個break結束迴圈,因為只需要最小的乙個編號即可

下面是**

oil=0f=

0for num in

range

(n):

for i in

range

(n):

oil=oil+limit[

(num+i)

%n]if oil(num+i)

%n]:

oil=

0break

if oil>=cost[

(num+i)

%n]and i!=n-1:

oil=oil-cost[

(num+i)

%n]if oil>=cost[

(num+i)

%n]and i==n-1:

print

(num)

f=1break

if f==1:

break

if f==0:

print(-

1)

python自學做題記錄之凱撒密碼

問題描述 凱撒密碼是古羅 撒大帝用來保護重要軍情的加密系統。這套密碼系統在現在看來很低階,但是在古羅馬時期還是發揮了重要作用的。凱撒密碼的根本思想是按照字母表排列順序將明文中每個字母變換成其後第n個字母。這裡,n n 1 25 被稱作秘鑰。請編寫程式,針對不同的輸入字串和移動位數,輸出經過凱撒加密之...

python自學做題記錄之序列判斷

題目描述 給你乙個整數組成的列表l,按照下列條件輸出 若l是公升序排列的,則輸出 up 若l是降序排列的,則輸出 down 若l無序,則輸出 wrong 示例 輸入 l 1,1,3,3,4 輸出 up 可以用死辦法做 f 0for i in range len l 1 if l i l i 1 遞減...

python自學做題記錄之py數

題目描述 py從小喜歡奇特的東西,而且天生對數字特別敏感,一次偶然的機會,他發現了乙個有趣的四位數2992,這個數,它的十進位制數表示,其四位數字之和為2 9 9 2 22,它的十六進製制數bb0,其四位數字之和也為22,同時它的十二進位制數表示1894,其四位數字之和也為22,啊哈,真是巧啊。py...