力扣c語言實現 983 最低票價

2021-10-24 01:49:09 字數 1467 閱讀 8140

在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的整數。

火車票有三種不同的銷售方式:

一張為期一天的通行證售價為 costs[0] 美元;

一張為期七天的通行證售價為 costs[1] 美元;

一張為期三十天的通行證售價為 costs[2] 美元。

通行證允許數天無限制的旅行。 例如,如果我們在第 2 天獲得一張為期 7 天的通行證,那麼我們可以連著旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。

返回你想要完成在給定的列表 days 中列出的每一天的旅行所需要的最低消費。

示例 1:

輸入:days = [1,4,6,7,8,20], costs = [2,7,15]

輸出:11

解釋:例如,這裡有一種購買通行證的方法,可以讓你完成你的旅行計畫:

在第 1 天,你花了 costs[0] = $2 買了一張為期 1 天的通行證,它將在第 1 天生效。

在第 3 天,你花了 costs[1] = $7 買了一張為期 7 天的通行證,它將在第 3, 4, …, 9 天生效。

在第 20 天,你花了 costs[0] = $2 買了一張為期 1 天的通行證,它將在第 20 天生效。

你總共花了 $11,並完成了你計畫的每一天旅行。

示例 2:

輸入:days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]

輸出:17

解釋:例如,這裡有一種購買通行證的方法,可以讓你完成你的旅行計畫:

在第 1 天,你花了 costs[2] = $15 買了一張為期 30 天的通行證,它將在第 1, 2, …, 30 天生效。

在第 31 天,你花了 costs[0] = $2 買了一張為期 1 天的通行證,它將在第 31 天生效。

你總共花了 $17,並完成了你計畫的每一天旅行。

int

min(a,b)

intmincosttickets

(int

* days,

int dayssize,

int* costs,

int costssize)

for(

int i =

1; i <= n; i++

)else

else

if(i >=30)

else

dp[i]

=min

(c,min

(a,b));

dp[n] = min(do[n-]+costs[0],dp[n-7]+costs[1]+dp[n-30]+costs[2]);這是因為,並沒有明確告知costs陣列的值遞增}}

return dp[days[dayssize-1]

];}

力扣c語言實現 682 棒球比賽

原題目連線 你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個...

力扣c語言實現 7 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...

力扣c語言實現 42 接雨水

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。示例 1 輸入 height 0,1,0,2,1,0,1,3,2,1,2,1 輸出 6 解釋 上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位...