CSP-201312-4有趣的数
问题描述
我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。 3. 最高位数字不为0。 因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。 请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。
输入格式
输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。
输出格式
输出只有一行,包括恰好n 位的整数中有趣的数的个数除以1000000007的余数。
样例输入
4
样例输出
3
代码展示
思路分析:本题最开始比较容易想到的是回溯求解,但是回溯思想在n=30时,所消耗时间就已经非常大,当n=1000时,程序可能在很长时间都计算不出结果,因此要舍弃回溯思想。
之后想到采用动态规划可能会更快,
但动态规划求解的难点在于如何确定状态,
以及求解状态间的转移方程。仔细观察后,每一位的状态均以0,1,2,3是否存在所决定,一共是16种情况,但要去掉7种不符合的情况。在由倒数第i位,进而求解倒数第i+1位时,
第i+1位可依次选择0,1,2,3去除不符合条件的情况,并且选择的位置一定会影响倒数第i位的状态,进而求出由第i+1位的某个状态,选择0,1,2,3中的一个值,所能到达的倒数第i位的状态。
__EOF__

本文作者:不太聪明的小高
本文链接:https://www.cnblogs.com/daviselppa/p/16018520.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/daviselppa/p/16018520.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)