数位dp 专题
先来模板:
int dfs(int i,int s,bool e) ///枚举第i位,第i位前一位的数字为s,e表示前缀是否已达到上界。(如果未达到,则枚举0000...~9999..,反之枚举0000...~abcd...) { if(i==-1) return 1; if(!e&&~f[i][s]) return f[i][s];/// f记录的是位数为i,前一数字为s的0000..~9999...的符合条件的个数 int res=0; int u=e?num[i]:9; REP(d,0,u){ res+=dfs(i-1,d,e&&d==u)); } return d==u?res:f[i][s]=res; }
时间: 2024-10-27 08:22:29