12.填充

12.填充 - 蓝桥云课 (lanqiao.cn)

问题描述

有一个长度为n的01串,其中有一些位置标记为 ?,这些位置上可以任意填充0或者1,请问如何填充这些位置使得这个01串中出现互不重叠的00和11子串最多,输出子串个数

输入格式

输入一行包含一个字符串

输出格式

输出一行包含一个整数表示答案

样例输入

1110?0

样例输出

复制代码
import os
import sys

# 请在此输入您的代码
s=input()
n=len(s)
dp=[0]*n

for i in range(1,n):
  if s[i]==s[i-1] or s[i]=='?' or s[i-1]=='?': #如果当前位置的字符与前一个位置的字符相同,或者当前位置或前一个位置为问号(?)
    dp[i]=dp[i-2]+1  #i-2应该是因为要00/11 才算进子串数量
  else: #如果当前位置的字符与前一个位置的字符不相同,且当前位置和前一个位置都不是问号
    dp[i]=dp[i-1] #0,1变化,最长字串长度不发生变化,等于前一个长度
print(dp[-1])
相关推荐
pen-ai4 小时前
【Yolo系列】Yolov3 目标检测算法原理详解
算法·yolo·目标检测
田里的水稻4 小时前
EP_基于UWB和单线激光雷达的托盘转送
人工智能·算法·数学建模·机器人·自动驾驶
隔壁大炮5 小时前
08. PyTorch_张量基本创建方式
人工智能·pytorch·python
List<String> error_P5 小时前
DFS(深度优先搜索)
数据结构·算法·dfs
今儿敲了吗5 小时前
27| 魔法封印
数据结构·c++·笔记·学习·算法
遨游xyz5 小时前
BM算法(Boyer-Moore)
开发语言·python
honortech5 小时前
算法题中的 mid 中点问题
算法
今儿敲了吗5 小时前
30| 木材加工
数据结构·c++·笔记·学习·算法
WW_千谷山4_sch5 小时前
MYOJ_7789:(洛谷P3388)【模板】割点(割顶)(tarjan算法)
c++·算法·深度优先·图论
WZ188104638695 小时前
LeetCode第131题
算法·leetcode