数位dp进阶题目——较复杂的状态刻画

前言

在前一节链接里,我们讨论了数位dp的基础应用,从数位dp的简单状态刻画状态方程的给出,以及之后给出了较为统一的记忆化模板来解决大多数问题,在这一节里首先给出一个较复杂的状态方程求解问题,剩下3个用记忆化解决的问题来加深印象。

The Counting Problem

POJ 2282 题目链接
Given two integers a and b, we write the numbers between a and b, inclusive, in a list. Your task is to calculate the number of occurrences of each digit. For example, if a = 1024 and b = 1032, the list will be
1024 1025 1026 1027 1028 1029 1030 1031 1032

there are ten 0’s in the list, ten 1’s, seven 2’s, three 3’s, and etc.

【题目大意】求出给定区间内0~9每个数出现的次数

【题目思路】定义dp[i][j][k]为 以j开头含有i位数字 其中出现数字k的个数
状态转移方程:若j=k,(即第一位数字为出现的数字), dp[i][j][k]=10i1 ,表示以j开头后面任意;
dp[i][j][k]=9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值