自用模板 數字dp

2021-06-26 12:18:52 字數 716 閱讀 8166

#include#includeint dp[10][3];

/*dp[i][0]為位數小於等於i且不含62也不含4的數字的個數

dp[i][1]為位數為i且首位為2且不含62也不含4的數字的個數

dp[i][2]為位數小於等於i且含62或4的數字的個數

*/int digit[10];

void er()

}int wei(int n)//將n分離至digit陣列並記錄數字

digit[i]=0;//因為solve函式中有對i+1位進行操作,所以這裡將i+1位賦值為0

return i-1;

}int solve(int n)

else//最高位不為4或62的數字

if(digit[j]>6)//當前位含有6的數字,例7+***xx,且低位無4或62

if(digit[j+1]==6&&digit[j]>2)//當前位含有2的數字,且上一位為6的數字,例6+3***xx

}if((digit[j+1]==6&&digit[j]==2)||digit[j]==4)//控制mark變數,即最高位為4或62的數字

}return sum;

}int main()

er();

printf("%d\n",m-n+1-solve(m+1)+solve(n));

} return 0;

}

數字DP入門 數字DP模板

數字dp是一種計數用的dp,一般就是要統計乙個區間 le,ri 內滿足一些條件數的個數。所謂數字dp,字面意思就是在數字上進行dp咯。數字還算是比較好聽的名字,數字的含義 乙個數有個位 十位 百位 千位.數的每一位就是數字啦!之所以要引入數字的概念完全就是為了dp。數字dp的實質就是換一種暴力列舉的...

數字dp 模板

dp pos,狀態變數.限制布林 if limit dp 狀態 a 已經求出對應狀態值下的結果了 記錄下來 return a 所以 數字dp其實就是一種求解有關於l到r有多少個符合條件的數目類似的統計問題的解題思路 一遍遍數字列舉太慢 不如我們根據條件列舉數字 數字dp本質上是記憶化搜尋 我們需要在...

數字DP模板

數字dp問題,大多是統計數量,通常用按位處理的方法解決。具體為 詢問 l,r l,r l,r 中滿足某一條件的數。利用字首和的思想,我們可以把問題簡化,即轉化為詢問 1,r 1,r 1,r 和 1,l 1 1,l 1 1,l 1 實現時,常常使用記憶化搜尋,由於有很多限制條件,所以常常增加幾維狀態,...