數字DP 尋找範圍內沒有62的有多少個數

2022-06-19 03:51:10 字數 1289 閱讀 8977

數字dp就是把數拆成乙個乙個的,然後,看 上一位如果是6的話,這一位就不能是2,這個數加上往下遞減 所得到的總數就是結果。

其中有一點就是limit,資料的範圍很可能不是整數,就用乙個limit,看上一位是否達到了最大值,如果達到了最大值,這一位的範圍就是(0-最大值),再往下傳遞。

總之三個引數,len,if6,limit。

其中用到了乙個記憶化搜尋,要注意是沒到極限的時候,傳遞結果,如果到了就不能傳遞了。

起始時 limit 設為true,到達極限 。

杭州人稱那些傻乎乎粘嗒嗒的人為62(音:laoer)。 

杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。 

不吉利的數字為所有含有4或62的號碼。例如: 

62315 73418 88914 

都屬於不吉利號碼。但是,61152雖然含有6和2,但不是62連號,所以不屬於不吉利數字之列。 

你的任務是,對於每次給出的乙個牌照區間號,推斷出交管局今次又要實際上給多少輛新的士車上牌照了。

輸入的都是整數對n、m(0對於每個整數對,輸出乙個不含有不吉利數字的統計個數,該數值佔一行位置。 

input

1 100

0 0

1 #include2 #include3 #include

4 #include5 #include6 #include

7 #include8 #include9 #include10 #include11

using

namespace

std;

12 typedef long

long

ll;13

const

int n = 1010;14

intn, m;

15int digit[20

];16 ll dp[20][2

];17 ll dfs(int len, bool if6, bool

limit)

1830

if (!limit) dp[len][if6] =cnt;

31return

cnt;32}

33ll solve(ll num)

3441

return dfs(k,false,true

);42}43

intmain()

4450

return0;

51 }

view code

n範圍內尋找重複數

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 可以用set直接判斷,時間複雜度為o n 但是實際是...

LeetCode 1067 範圍內的數字計數

給定乙個在 0 到 9 之間的整數 d,和兩個正整數 low 和 high 分別作為上下界。返回 d 在 low 和 high 之間的整數 現的次數,包括邊界 low 和 high。示例 1 輸入 d 1,low 1,high 13輸出 6 解釋 數字 d 1 在 1,10 11,12 13 現 6...

範圍內的拖拽事件

粉色div在 父級div 範圍內拖拽,不能移動出div範圍 1,先實現拖拽 獲取標籤物件 var obox document.queryselector box var oinner document.queryselector inner 獲取父級標籤,margin left 和 border l...