kitty猫的基因编码
Time Limit:1s Memory Limit:1000k
Total Submit:4105 Accepted:1529
Problem
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
C的解答和结果
#include <stdio.h>
#include <string.h>
void Decode(char* input, int start, int end)
{
int i, mid;
if(start == end){
if(input[start] == '0') putchar('A');
else putchar('B');
return;
}
for(i = start + 1; i <= end; i++){
if(input[start] != input[i]) break;
}
if(i <= end){
putchar('C');
mid = (start + end + 1) / 2;
Decode(input, start, mid - 1);
Decode(input, mid, end);
}else{
if(input[start] == '0') putchar('A');
else putchar('B');
}
}
int main()
{
char input[260];
while(1){
if(gets(input) == NULL) break;
Decode(input, 0, strlen(input)-1);
putchar('/n');
}
return 0;
}
Memory: 36K
Time: 1ms