kitty猫的基因编码(栈)

这篇博客探讨了如何将Kitty猫基因中2^k长度的01序列转换为ABC编码。通过定义T(s)函数,将全0序列标记为'A',全1序列标记为'B',不全0或全1的序列转化为'C'加上两个子串的ABC编码。例如,'00001111'的ABC编码为'CAB'。输入为多个kitty的01基因编码,输出为对应的ABC编码序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

  kitty的基因编码如下定义: kitty的基因由一串长度2^k(k<=8)的01序列构成,为了方便研究,需要把,01序列转换为ABC编码。用T(s)来表示01序列s的ABC编码 T(s)=‘A'(当S全由'0'组成) T(s)=‘B'(当s全由'1'组成) T(s)=‘C'+T(s1)+T(s2) s1,s2为把s等分为2个长度相等的子串 比如 T('00')='A' T('00001111')='CAB' 

Input

一行,长度为2^k,为kitty猫的01基因编码,有多个数据

Output

一行,由ABC构成的ABC编码

Sample Input

 

01001011

 

Sample Output

 

CCCABACCBAB


解题思路:先用字符串读入,然后用递归,按照题目的要求进行转化,最后输出转化的结果即可。

程序:
var
  s:ansistring;

function dg(s:ansistring):ansistring;
  var
    s1,s2:ansistring;
    i,len,max1,max2:longint;
  begin
    if s=' ' then exit;
    len:=length(s);
    max1:=0;
    max2:=0;
    s1:='';
    s2:='';
    for i:=1 to len do
      if s[i]='0' then inc(max1) else inc(max2);
    if max1=len then exit('A');
    if max2=len then exit('B');
    for i:=1 to len div 2 do
      begin
        s1:=s1+s[i];
        s2:=s2+s[i+(len div 2)];
      end;
    dg:='C'+dg(s1)+dg(s2);
end;

begin
  readln(s);
  writeln(dg(s));
end.


版权属于: Chris
原文地址: http://blog.sina.com.cn/s/blog_83ac6af80102v6tg.html
转载时必须以链接形式注明原始出处及本声明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值