【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;
}

 

 

  

 

 

posted @ 2017-11-16 10:19  开心消消乐a  阅读(1377)  评论(0编辑  收藏  举报