XDOJ 数据结构作业 魔王语言解释 (翻译题目)

标题 

魔王语言解释

时间限制

1 S

内存限制

10000 Kb

问题描述

有一个魔王总是使用自已的一种非常精练而抽象的语言讲话,没有人能听得懂。但他的语言是可以逐步解释成人能懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:

(1) α→β1β2…βm

(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ)

在这两种形式中,从左到右均表示解释;从右到左均表示抽象。

写一个魔王解释程序,将魔王的话解释成人能听懂的话。

基本要求:设大写字母表示魔王语言的词汇,小写字母表示人的词汇,希腊字母表示可以用大写字母或小写字母代换的变量。用下述两种规则和下述规则(2)实现。

(1) B→tAdA

(2) A→sae

问题输入

一组数据,数据为一个字符串,表示一个待翻译的字符串。

问题输出

将字符串按规则翻译后输出。

输入样例

B(pxyzABhij)B

输出样例

tsaedsaepjpiphptsaedsaepsaepzpypxptsaedsae

看完题目我直接就是一脸懵,下面这俩到底是啥,

(1) α→β1β2…βm

(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ)

样例的输出为啥不是 tsaedsae(pxyzsaetsaedsaehij)tsaedsae   

于是乎我找了大佬的代码,仔细思考,终于明白了题目的意思,真给我气笑了

(1) α→β1β2…βm   

对应

(1) B→tAdA

(2) A→sae

指字符串的替换

(2) (θδ1δ2…δm)→(θδm…δ2θδ1θ)  这个式子中的θ与δ无区别,都可以指任何字符

因此,字符串B(pxyzABhij)B 中的三B两A用

(1) B→tAdA

(2) A→sae    替换即可

中间括号需要用(θδ1δ2…δm)→(θδm…δ2θδ1θ)   θ→p   δ1δ2…δm→xyzABhij

即 pxyzABhij →pjpiphpBpApzpypxp

这就是这个题想表达的意思,如果你像我一样是个笨比看不懂题目,希望这可以帮助你理解该题目

附上大佬的代码链接:魔王语言解释问题(C语言) - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值