摘要:假設(shè)是第一根柱子及之前涂色的可能性數(shù)量,是第二根柱子及之前涂色的可能性數(shù)量,則。遞推式有了,下面再討論下情況,所有柱子中第一根涂色的方式有中,第二根涂色的方式則是,因?yàn)榈诙涌梢院偷谝桓粯印?/p>
Paint Fence
哈希表法 復(fù)雜度There is a fence with n posts, each post can be painted with one of the k colors.
You have to paint all the posts such that no more than two adjacent fence posts have the same color.
Return the total number of ways you can paint the fence.
Note: n and k are non-negative integers.
時(shí)間 O(N) 空間 O(1)
思路這種給定一個(gè)規(guī)則,計(jì)算有多少種結(jié)果的題目一般都是動(dòng)態(tài)規(guī)劃,因?yàn)槲覀兛梢詮倪@個(gè)規(guī)則中得到遞推式。根據(jù)題意,不能有超過連續(xù)兩根柱子是一個(gè)顏色,也就意味著第三根柱子要么根第一個(gè)柱子不是一個(gè)顏色,要么跟第二根柱子不是一個(gè)顏色。如果不是同一個(gè)顏色,計(jì)算可能性的時(shí)候就要去掉之前的顏色,也就是k-1種可能性。假設(shè)dp[1]是第一根柱子及之前涂色的可能性數(shù)量,dp[2]是第二根柱子及之前涂色的可能性數(shù)量,則dp[3]=(k-1)*dp[1] + (k-1)*dp[2]。
遞推式有了,下面再討論下base情況,所有柱子中第一根涂色的方式有k中,第二根涂色的方式則是k*k,因?yàn)榈诙涌梢院偷谝桓粯印?/p> 代碼
public class Solution { public int numWays(int n, int k) { // 當(dāng)n=0時(shí)返回0 int dp[] = {0, k , k*k, 0}; if(n <= 2){ return dp[n]; } for(int i = 2; i < n; i++){ // 遞推式:第三根柱子要么根第一個(gè)柱子不是一個(gè)顏色,要么跟第二根柱子不是一個(gè)顏色 dp[3] = (k - 1) * (dp[1] + dp[2]); dp[1] = dp[2]; dp[2] = dp[3]; } return dp[3]; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64589.html
摘要:動(dòng)態(tài)規(guī)劃復(fù)雜度時(shí)間空間思路直到房子,其最小的涂色開銷是直到房子的最小涂色開銷,加上房子本身的涂色開銷。我們?cè)谠瓟?shù)組上修改,可以做到不用空間。代碼找出最小和次小的,最小的要記錄下標(biāo),方便下一輪判斷 Paint House There are a row of n houses, each house can be painted with one of the three colors...
Problem There is a fence with n posts, each post can be painted with one of the k colors.You have to paint all the posts such that no more than two adjacent fence posts have the same color.Return the ...
276. Paint Fence 題目鏈接:https://leetcode.com/problems... dp來解,subproblem是:diff[i]: number of paints when current i is different from i - 1, same[i]: number of paints when current i is same as i-1所以dp方程為...
摘要:代碼如下表示跟前面不一樣顏色,表示跟前面一樣顏色跟前面不一樣顏色的話,在這輪有種可能性跟前面一樣顏色的話,在這輪有種可能性,且前一輪不能與前前一輪一樣顏色因?yàn)檫@個(gè)的解法里,我們只用到變量和,所以我們可以進(jìn)定步把空間復(fù)雜度降為 題目:There is a fence with n posts, each post can be painted with one of the k colo...
摘要:編碼全家桶小程序提供實(shí)體莫爾斯電碼等編碼轉(zhuǎn)換工具,凱撒密碼柵欄密碼等加密工具,及地址查詢信息查詢等工具。 CTF編碼全家桶小程序提供Base64、Url、HTML實(shí)體、莫爾斯電碼等編碼轉(zhuǎn)換工具,凱撒密碼、柵欄密碼、ROT13、MD5、SHA等加密工具,及IP地址查詢、Whois信息查詢等工具。showImg(https://segmentfault.com/img/bVbiudU?w=...
閱讀 2654·2021-11-23 09:51
閱讀 3246·2021-11-22 14:44
閱讀 4575·2021-11-22 09:34
閱讀 5102·2021-10-08 10:14
閱讀 2404·2021-09-22 15:47
閱讀 3502·2021-09-22 15:40
閱讀 1510·2019-08-30 15:44
閱讀 1619·2019-08-28 18:23