火龙信奥
  • 分享
  • 课程
  • 在线题库
  • CSES
    • GESP
    • CSP
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 知识课堂
  • 在线比赛
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

第12讲. 边界问题(分块收集处理)

作者: 作者的头像   huolong , 时间:2024-07-30 13:00:07 , 所有人可见, 阅读  69

第12讲. 边界问题(分块收集处理)

例 1. 一段文本中包含多个非 0 整数(整数之间由一些非数字符号分隔),请统计整数的个数,并计算所有整数之和。程序及测试情况如下,请回答后面问题。

样例 输入:120nn 67,t20,yw50,,g60 输出:5 317

s = input() + ','
sum, cnt = 0, 0
dt = 0 # 躯干初始化
for e in s:
    if '0' <= e <= '9':
        dt = dt * 10 + int(e)
    else:
        if dt>0 :
            sum += dt; cnt += 1
        dt = 0
if dt > 0: sum += dt; cnt += 1
print(cnt, sum)

3. 无直接分隔,通过状态变化做分隔。如最长递增序列等

例 2. RLE 压缩算法是 Windows 系统中使用的一种图像文件压缩方法,用两个数据表示,第一个记录指定像素重复的次数;第二个记录具体像素的值。例如,有一表示颜色像素值的字符串 RRRRGGBBB,用 RLE 压缩方法压缩后可用 4R2G3B 表示。程序及测试情况如下,请回答后面问题

样例 输入:RRRRGGBBB 输出:4R2G3B

s1 = "RRRGBBB"

s2 = ''; ch = s1[0]; cnt = 1
for e in s1[1:]:
    if ch == e:
        cnt += 1
    else:
        s2 += str(cnt) + ch
        ch = e #①
        cnt = 1
print(s2 + str(cnt) + ch ) 

—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

关于火龙

  • 关于我们
  • 学员获奖
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习 HOT
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码