回 帖 发 新 帖 刷新版面

主题:大家看看偶错哪了?有加分~~~~~

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:string;
 procedure f(k:string);
  var
  i,a,b:integer;
 p:string;
 begin
 a:=0;
 b:=0;
 for i:=1 to length(k) do
 if k[i]='0'
 then a:=a+1
 else b:=b+1;
 if a=length(k)
 then write('A')
 else if b=length(k)
 then write('B')
 else begin
        write('C');
        p:=copy(k,1,length(k)div 2);
        f(p);
        p:=copy(k,(length(k) div 2) +1,length(k) div 2);
        f(p);
     end;
 end;
 begin
 read(s);
 f(s);
 end.

回复列表 (共6个回复)

沙发

我加了点头子运行了下,没错呀!

program kitty;
var
 s:string;
 procedure du;
  begin
   assign(input,'kitty.in'); reset(input);
   assign(output,'kitty.out'); rewrite(output);
   read(s);
  end;
 procedure f(k:string);
  var
  i,a,b:integer;
 p:string;
 begin
 a:=0;
 b:=0;
 for i:=1 to length(k) do
 if k[i]='0'
 then a:=a+1
 else b:=b+1;
 if a=length(k)
 then write('A')
 else if b=length(k)
 then write('B')
 else begin
        write('C');
        p:=copy(k,1,length(k)div 2);
        f(p);
        p:=copy(k,(length(k) div 2) +1,length(k) div 2);
        f(p);
     end;
 end;
 begin
 du;
 f(s);
 close(input);
 close(output);
 end.
 
输入:01001011
输出:CCCABACCBAB

板凳

可为什么在TONGJI中通不过?

3 楼

没人回答吗?!

4 楼

大家快回呀!

5 楼

string最大长度为255.
题目中最大长度为256.
请把string换成ansistring.

30分~~~

6 楼

谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册