数位dp
数位dp
Wonder-King
有好奇心,什么都想学一点。
展开
-
51Nod1009 数字1的数量(数位dp算法)
数位dp算法:void dfs(int a,int b,int c[]){ ll n=a/10,m=a%10,t=n; for(int i=0;i<=m;i++) c[i]+=b;//当前位对低位的影响 for(int i=0;i<10;i++) c[i]+=b*n;//高位对低位的影响 c[0]-=b;//0特殊处理,将多算的0减去 ...原创 2018-11-22 18:51:16 · 346 阅读 · 0 评论 -
51Nod1042 数字0-9的数量(数位dp)
这道题刚开始我直接用暴力模拟,果断超时了鸭,不开心!然后查了资料发现了数位dp算法,看了一下午也没看明白,又不开森!直接用得了,哈!数位dp算法是直接算出来1到某个数之间各个位数字之和,结果存在数组c里面。#include <iostream>#define ll long longusing namespace std; void dfs(ll a,ll b,l...原创 2018-11-22 18:58:15 · 365 阅读 · 0 评论 -
51Nod1043 幸运号码(动归数位dp)
我们用dp[i][j]表示的是前i位的数字和为j,j最大为9*i ,前i位每位都是9的时候。 这样假如我们求得了dp[n][1]一直到dp[n][9*n]的数字,那么最终结果就是dp[n][1] * dp[n][1] + ... + dp[n][9*n] * dp[n][9*n] . 但是这里还有一个问题就是,dp[i][j] 表示的是前i位的数字和为j,但是我们知道前面的那个 i...原创 2018-12-22 11:04:26 · 243 阅读 · 0 评论