蓝桥杯算法入门(Python) 课件 8-3DP设计基础.pptxVIP

  • 0
  • 0
  • 约2.13千字
  • 约 9页
  • 2026-08-24 发布于山东
  • 举报

蓝桥杯算法入门(Python) 课件 8-3DP设计基础.pptx

罗勇军8.3DP设计基础蓝桥杯算法入门

DP的基本问题2状态设计状态转移编码实现

更小的数LanqiaoOJ35033问题描述:有一个长度为n且仅由数字字符0~9组成的字符串,下标从0到n-1。你可以将其视作是一个具有n位的十进制数字num。小蓝可以从num中选出一段连续的子串并将子串进行反转,最多反转一次。小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字numnew满足条件numnewnum。请你帮他计算下一共有多少种不同的子串选择方案。只要两个子串在num中的位置不完全相同我们就视作是不同的方案。注意,我们允许前导零的存在,即数字的最高位可以是0,这是合法的。输入:输入一行包含一个长度为n的字符串表示num(仅包含数字字符0~9),从左至右下标依次为0~n?1。输出:输出一个整数表示答案。

1、DP状态设计4DP状态:定义二维数组dp[][],dp[i][j]表示子串s[i]~s[j]反转之后是否大于反转前的子串。dp[i][j]=1:表示反转之后变小,符合要求;dp[i][j]=0:表示反转之后没有变小。

2、DP转移方程5对于每个子串,比较它的首尾字符s[i]和s[j],得到状态转移方程。(1)若s[i]s[j],说明反转后的子串肯定小于原子串,符合要求,赋值dp[i][j]=1。(2)若s[i]s[j],说明反转后的子串肯定

文档评论(0)

1亿VIP精品文档

相关文档