Kitty猫基因编码

FJNU.1437

Description
小可可选修了基础生物基因学.教授告诉大家Super Samuel星球上Kitty猫的基因的长度都是2的正整数次幂2^k(k<=8),全是由两种不同的基因单元组成的.这两种不同的基因单元分别记成0和1,于是Kitty猫基因可以写成一个01串表达式s.
为了便于分析和降低数据存储量,教授发明了ABC编码规则.该编码规则是不断地按照 
 对Kitty猫基因01串表达式进行改写,直至最终被改写成只含有字符"A","B","C"的符号串. 
请你编写程序帮助小可可求出Kitty猫基因的ABC编码以协助教授开展科研工作.

Input
只有一行,存放了一个Kitty猫基因的01串表达式.

Output
输出这个Kitty猫基因的ABC编码.

Sample Input
01001011

Sample Output
CCCABACCBAB

Source
SGOI11

My Program

#include < iostream >
#include
< string .h >
using   namespace  std;
char  str[ 256 ];

void  dna( int  s, int  e)
{
    
int i;
    
for(i=s+1;i<e;i++)
        
if(str[i]!=str[i-1])
        
{
            cout
<<"C";
            dna(s,(s
+e)/2);
            dna((s
+e)/2,e);
            
return;
        }

    
if(str[s]=='0')
        cout
<<"A";
    
else
        cout
<<"B";
}


int  main()
{
    
int n;
    cin
>>str;
    n
=strlen(str);
    dna(
0,n);
    cout
<<endl;
    
return 0;
}

YOYO's Note:
 递归。。当不同时输出C先,然后调用剩下的左右一半。如果相同直接输出A/B就好啦!

你可能感兴趣的:(【ACM】解题报告,iostream,output,input,string,生物,存储)