這篇文章主要介紹“怎么使用K-th語(yǔ)法”,在日常操作中,相信很多人在怎么使用K-th語(yǔ)法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用K-th語(yǔ)法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)和重慶服務(wù)器托管的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。題目是一行都是只有0或者1兩個(gè)元素,下一行是當(dāng)前的轉(zhuǎn)變,0的元素變?yōu)?1,1的元素變?yōu)?0。
舉例如下,那么給出行數(shù)N,和橫向位數(shù)K,那個(gè)元素是0還是1.
比如如下給出N是4,K是5,那個(gè)元素就是1。
Explanation:
row 1: 0 row 2: 01 row 3: 0110 row 4: 01101001
其實(shí)這個(gè)問(wèn)題某種意義上就是簡(jiǎn)單版的帕斯卡三角,如果頭鐵一層一層遞歸下來(lái)當(dāng)然可以,不過(guò)效率太低了。
分析了下,其實(shí)對(duì)于當(dāng)前行的橫向位數(shù)K,就是上一行向上取整K/2位的元素的轉(zhuǎn)變過(guò)來(lái)的,如果上一個(gè)是0,則是0或者1,如果若非偶數(shù),就是0,如果偶數(shù)就是1;對(duì)于1,非偶數(shù)則是1,偶數(shù)是0。按照這個(gè)道理遞歸即可。
代碼如下,int((K+1)/2)是為了向上取整。
class Solution: def kthGrammar(self, N: int, K: int) -> int: defuatN = 4 defautRow = '01101001' if K < 8: return int(defautRow[K-1]) else: if K%2 == 1: re = self.kthGrammar(N-1,int((K+1)/2)) else: re = 0 if self.kthGrammar(N-1,int((K+1)/2)) == 1 else 1 return re
到此,關(guān)于“怎么使用K-th語(yǔ)法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!