【C语言程序】基因编码

输入一个长为n=2k(k≤8)01串s,按照"ABC编码规则"进行编码,ABC编码规则是:

A //若s串全是0

T(s)= B //若s串全是1

CT(s1)T(s2) //否则把s串分成两个等长的子串s1和s2

例如:

T(01001011)

=CT(0100)T(1011)

=CCT(01)T(00)CT(10)T(11)

=CCCT(0)T(1)ACCT(1)T(0)B

=CCCABACCBAB

#include <stdio.h>
#include <string.h>
void f(char a[],int begin,int end)
{
int num_A=0,num_B=0;
int i;
for(i=begin;i<end;i++)
{
if(a[i]=='0')
num_A++;         //记录0的个数 
else if(a[i]=='1')
num_B++;         //记录1的个数 
}
if(num_A==end-begin)//如果该数组全为0 
printf("A");
else if(num_B==end-begin)//如果该数组全为1 
printf("B");
else
{
printf("C");
f(a,begin,(end+begin)/2); 
f(a,(end+begin)/2,end);
}
}
int main()
{
char a[500];
int length;
gets(a);
length=strlen(a);
f(a,0,length);
return 0;
}