首页 > 其他分享 >OD C卷 - 数据单元的变量替换

OD C卷 - 数据单元的变量替换

时间:2024-07-24 23:25:39浏览次数:15  
标签:OD cells 单元格 cell arrow ref 替换 单元 left

数据单元的变量替换(100)

输入描述:

  • 输入一行数据,用逗号分割每个单元格,尾部没有逗号,最多26个单元格,对应编号A-Z;
  • 每个单元格内容:字母、数字、<> 单元格引用,如aCd<A>8u引用单元格A;
  • 输入不存在循环引用,一个单元格只能引用一个其他的单元格;

输出描述:
输出所有单元格展开的内容,单元格间用逗号分隔,处理出错则输出-1

 
示例1
输入:1,2<A>00
输出: 1,2100

 
示例2:
输入:<B>12,1
输出:112,1
 
示例3
输入:<B<12,1
输出:-1
 
示例4
输入:<B>12,1,a,2<A>00
输出:112,1,a,211200


# 解析每个带有引用的单元格
def parse_ref(cell):
    global error_label, cells, result
    left_arrow = cell.find("<")
    right_arrow = cell.find(">")
    if left_arrow >= 0 and right_arrow >= 0 and right_arrow - left_arrow == 2:
        # 获取引用值
        ref_idx = ord(cell[left_arrow + 1]) - 65
        ref_val = cells[ref_idx]  # 可能还包含引用
        if ref_val.isalnum():
            return cell[:left_arrow] + ref_val + cell[right_arrow + 1:]
        else:
            return cell[:left_arrow] + parse_ref(ref_val) + cell[right_arrow + 1:]
    else:
        error_label = True
        return "-1"


# 输入一行单元格
cells = input().strip().split(",")

# 对应cells 存储替换的单元格结果
result = ["" for _ in cells]
# 解析过程是否有错
error_label = False
for idx, cell in enumerate(cells):
    if cell.isalnum():
        result[idx] = cell
        continue
    else:
        # 含有引用符号
        r = parse_ref(cell)
        result[idx] = r
        if error_label:
            print("-1")
            break

# 输出结果
print(",".join(result))

标签:OD,cells,单元格,cell,arrow,ref,替换,单元,left
From: https://blog.csdn.net/weixin_45228198/article/details/140673195

相关文章

  • 51nod-1288汽油补给
    1288汽油补给https://class.51nod.com/Html/Textbook/ChapterIndex.html#textbookId=126&chapterId=337这道题算DP纯粹是个幌子,其实就是一个贪心的过程。为什么要留后面价格贵的油?因为可能不够用,先存着;而如果前面的贵,由于有\(T\)限制,所以在能够装满的同种情况下,用后面......
  • 刷题了:344.反转字符串|541. 反转字符串II|卡码网:54.替换数字
    344.反转字符串题目链接:https://leetcode.cn/problems/reverse-string/description/文章讲解:https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html视频讲解:https://www.bilibili.com/video/BV1fV4y17748/?spm_id_from=333.788&vd_sou......
  • Codeforces Round 961 (Div. 2)
    A.Diagonals----------------------------题解----------------------------------注意读题,题目中只有i+j相同的格子才是一个对角线,也就是说,(1,1)(2,2)(3,3)的那条大斜线不是个对角线,如图所示这是一个3*3的图中所有的对角线,那么我们只需要如图所示,从中间往两边依次放就可以,......
  • matlab 小数取余 rem 和 mod有 bug
    目录前言Matlab取余函数1mod函数1.1命令行输入1.2命令行输出2rem函数2.1命令行输入2.2命令行输出分析原因注意前言在Matlab代码中mod(0.11,0.1)<0.01判断为真,mod(1.11,0.1)<0.01判断为假,导致出现意料外的结果。结果发现被除数小于1的话会出现这......
  • modint 默认构造函数的一些想法
    今、在zhengruioi.com上参加模拟赛时被卡常了。这道题目涉及对\(998244353\)取模的操作,故我使用我自制的由atcoder::static_modint改写而来的modint完成了代码,这两个板子大致如下://modinttemplate<unsignedumod>structmodint{/*{{{*/staticconstexprintmod......
  • java中的一些经典算法code
    //1.importjava.util.LinkedList;importjava.util.Queue;publicclassCandyGame{//定义一个点的类,用于记录位置和当前累计的糖果数量staticclassPoint{intx,y,steps,candies;Point(intx,inty,intsteps,intcandies){......
  • LeetCode860. 柠檬水找零
    题目链接:https://leetcode.cn/problems/lemonade-change/description/题目叙述:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。你必须给每个顾客正确找零,......
  • 在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么
    在K8S中,当用户反映Pod连接数非常多时,为了查看这些连接的具体信息和状态,并考虑到容器内没有集成bash环境和网络工具的情况,可以采取以下步骤进行排查:一、确认问题并收集信息查看Pod状态:使用kubectlgetpods命令查看Pod列表,确认哪个Pod的连接数异常。使用kubectldescribepod......
  • LeetCode455.分发饼干
    LeetCode题目链接:https://leetcode.cn/problems/assign-cookies/description/题目叙述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺......
  • FreeModbus学习——eMBInit初始化
    FreeModbus版本:1.6在mb.c文件中先看一下静态变量的定义/*-----------------------Staticvariables---------------------------------*/staticUCHARucMBAddress;staticeMBModeeMBCurrentMode;ucMBAddress是从机地址,eMBCurrentMode是Modbus的工作模式,如......